7

ios programlarına yeni kayıt oldum, google arama kutusu gibi bir şey uygulamaya koymam gerekiyor. Benim durumum takip eden 1.Kullanıcı metin alanına yazarken, 2.background veri için web servisine çağrı yapın (istek verileri = metin alanı verileri). Örneğin: - metin alanında "abc" yazan bir kullanıcı varsa, web servis çağrısı için istek verileri "abc" olmalı ve web servisi buna yanıt verir. Şimdi bir sonraki sefer kullanıcı türü "d" i.e metin alanı, "abcd" servis yanıtının eklenmiş metni dikkate alması gerekir. (google arama alanı gibi bir şey) 3.web servis çağrısı Asynchronous olmalıdır. 4. Yanıtlar aşağı açılır listede görüntülenmelidir.Web servis çağrı yanıtını otomatik doldurma metni girin

ios içinde mi? Herhangi bir eğitim veya örnek takdir edilecektir. Şimdiden teşekkürler.

cevap

4

Tanrı'nın sevgisi için Restful bir web servisinden ve SOAP'DAN bahsetmediğinizi varsayacağım!

Evet, elbette. Bu yaklaşımı takip edebilirsiniz, ben istek yapmak için bir HTTP lib gibi AFNetworking kullanabilirsiniz ama basitlik uğruna sadece arka plan üzerinde URL içeriği ile NSData init'ing ve GCD kullanarak ana iş parçacığı üzerinde UI güncelleme.

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{ 

    // To increase performance I advise you to only make the http request on a string bigger than 3,4 chars, and only invoke it 
    if(textField.text.length + string.length - range.length > 3) // lets say 3 chars mininum 
    { 
     // call an asynchronous HTTP request 
     dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ 

      NSURL * url = [[NSURL alloc] initWithString:[NSString stringWithFormat:@"http:/example.com/search?q=%@", textField.text]]; 
      NSData * results = [NSData dataWithContentsOfURL:url]; 
      NSArray * parsedResults = [NSJSONSerialization JSONObjectWithData: results options: NSJSONReadingMutableContainers error: nil]; 
      // TODO: with this NSData, you can parse your values - XML/JSON 
      dispatch_sync(dispatch_get_main_queue(), ^{ 
       // TODO: And update your UI on the main thread 
       // let's say you update an array with the results and reload your UITableView 
       self.resultsArrayForTable = parsedResults; 
       [tableView reloadData]; 
      }); 
     }); 

    } 

    return YES; // this is the default return, means "Yes, you can append that char that you are writing 
    // you can limit the field size here by returning NO when a limit is reached 
} 

Gördüğünüz gibi:

  1. Eğer viewDidLoad: yöntemle

    textField.delegate = self; 
    
  2. geçersiz kılma UITextField temsilci yöntemi textField:shouldChangeCharactersInRange:replacementString: ile çalışıyoruz viewController için UITextField temsilci ayarla ne kavramların bir listesi var ed alışmak için:

    • JSON ayrıştırma (XML'i ayrıştırabilirim ama neden ?! JSON yolu iyidir!)
    • HTTP İsteği (yerine I) Yukarıdaki
    • Asenkron HTTP isteklerini (ana iş parçacığı blok yok)
    • GCD'yı (dispatch_async şeyler)
    • ne yaptık AFNetworking kullanabilirsiniz Delegeler Performans güncellemesi

    (UITextField için bu durumda)

    • boyutu 3 karakterden büyük olup olmadığını kontrol ederken, sadece HTTP isteğini her 2/3 karakterde yapabilirsin, diyelim ki sadece length % 3.

    Sana

+0

Carlos Cevabınız için teşekkür ederim olanlar hakkında bir şeyler okumak öneririz. Kontrol edip size haber vereceğim – Raj

İlgili konular