2016-04-03 38 views
1

CoreData'da bazı öğelere sahip olmaya bağlı bir uygulama oluşturmaya çalışıyorum. Tümüyle iyi çalışan harici bir veri kaynağı ile senkronize ediyorum.Hızlı bir şekilde uygulama akışını denetleme

benim app üç yöntem kullanır ve tek bir görünüm uygulaması:

syncData() 
createSpinner() 
showResult() 

şimdi createSpinnerCoreData bazı verilere sahip bağlıdır - ve sadece bir kez

showResult çalıştırmak gerekiyor bağlıdır 'Spinner' oluşturuldu ve oluşturulduğunda bir kez de spontanı başlattığımız her defasında

SyncDataviewDidLoad() ve viewDidAppear() içinde createSpinner() veri createSpinner() zamanında yüklemez

sorun ilk açılışta ve dolayısıyla uygulama yararsız görünüyor (Bu boyut ekran boyutuna bağlı değişir gibi). Bu ilk senkronizasyon için 'nasıl' bekleyebilirim veya bazı veriler olup olmadığını kontrol etmek için bir şey ayarlayabilir miyim?

cevap

2

çözüm

bir seri kuyruğu oluşturarak bunu yapabilirsiniz ve self.syncData kullanmak zorunda o

let serialQueue = dispatch_queue_create("com.mycompany.myview", DISPATCH_QUEUE_SERIAL); 

override func viewDidLoad() { 
    super.viewDidLoad() 
    dispatch_async(serialQueue) { 
     syncData() 
    } 
} 

override func viewDidAppear() { 
    super.viewDidAppear() 
    dispatch_async(serialQueue) { 
     createSpinner() 
    } 
} 
+0

içine uyumsuz iki yöntem sevk aynı iş parçacığı çalıştırmak için syncData() & createSpinner() zorlamaktır() aksi halde xcode şikayet ediyor - ama aksi halde iyi çalışıyor - teşekkürler – Dan

+0

evet bunu unuttum çünkü kodu tarayıcıya yazmıyordum, xCode değil, cevabı lütfen doğru olarak işaretleyebilir misiniz –