Bir tabloya aktarılan verileri almak için bir arama alanına sahip çok basit bir uygulama yapıyorum.swift shouldPerformSegueWithIdentifier veri alın async
Yapmak istediğim, verileri almak için bir Async görevi çalıştırıyor ve veriler başarılı bir şekilde getirilirse sonraki görünüme gider, yükleme sırasında ekranın asenkron bölümünün neden gerekli olduğunu dondurmaması gerekir. kullanıcı Aradüğmesine basıldığında
benim
override func shouldPerformSegueWithIdentifier(identifier: String, sender: AnyObject?) -> Bool {
yöntemde verileri almak için aşağıdaki kodu çalıştırın.
var valid = true
let searchValue = searchField.text
let session = NSURLSession.sharedSession()
let url = NSURL(string: "https://someapi.com/search?query=" + searchValue!)
let task = session.dataTaskWithURL(url!, completionHandler: {(data: NSData?, response: NSURLResponse?, error: NSError?) -> Void in
if let theData = data {
dispatch_async(dispatch_get_main_queue(), {
//for the example a print is enough, later this will be replaced with a json parser
print(NSString(data: theData, encoding: NSUTF8StringEncoding) as! String)
})
}
else
{
valid = false;
print("something went wrong");
}
})
UIApplication.sharedApplication().networkActivityIndicatorVisible = true
task.resume()
return valid;
G/bağlantı için denetler uygulama kodu daha okunabilir hale getirmek için veriyi yükleyen göstermek için metinleri değiştirir bazı kodlar kaldırıldı. Bu benim ne olur onu (görünüm yüklenir çünkü bu görebilir) true döndürür vb bağlantısı
var bu kısmında tüm kontrolleri sonra gelir ve emin im, ben sorun var parçasıdır ama aynı zamanda "bir şey ters gitti" diye yazıyor.
Anladım çünkü geçerli (geçerli satırdaki geçerli) geçerli olarak geçerli olan geri dönüş geçerli olarak false değerine ayarlanmış. Veriler başarılı bir şekilde getirilirse ve bir şeylerin yanlış gitmesi durumunda sonraki görünümü göstermiyorsa yalnızca doğru (nasıl görünümü değiştirir) döndürürüm?
Bunu 'shouldPerformSegueWithIdentifier:' içinde yapamazsınız. Segue'i gerçekleştirmeye çalışmadan önce arama yapın ve "performSegueWithIdentifier:" işlevini çağırın ve eğer çağrı geri dönerse ve – dan
@dan yazmanız gerektiğini söylerse, "neden" sholuldPerformSegueWithIdentifier ile ilgili elma dokümanlarından değil "Belirtilen tanıtıcıya sahip segenin gerçekleştirilip gerçekleştirilmeyeceğini belirler." , tam olarak doğru yapmak istediğim şey bu mu? –
Evet, ancak bu kararı eşzamansız olarak yapamazsınız, hemen bir değer döndürmeniz gerekiyor. – dan