6

aramaları, ben bu iCloud NSMetaDataQuery gözlemcilere benim iCloud yöneticisi sınıfını abone:NSMetaDataQuery asla yazıyorum iCloud eklentisi için geri NSMetadataQueryDidFinishGatheringNotification

// Add a predicate for finding the documents 
NSString* filePattern = [NSString stringWithFormat:@"*.%@", @"*"]; 

self.metadataQuery = [[NSMetadataQuery alloc] init]; 

// Before starting to query, it is required to set the search scope. 
arrayWithObject:NSMetadataQueryUbiquitousDocumentsScope]]; 

// It is also required to set a search predicate. 
[self.metadataQuery setPredicate:[NSPredicate predicateWithFormat:@"%K LIKE %@", NSMetadataItemFSNameKey, filePattern]]; 

// Listen for the second phase live-updating 
[[NSNotificationCenter defaultCenter] addObserver:self 
             selector:@selector(queryDidReceiveNotification:) name:NSMetadataQueryDidUpdateNotification object:nil]; 

// Listen for the first phase gathering 
[[NSNotificationCenter defaultCenter] addObserver:self 
             selector:@selector(queryIsDoneGathering:) name:NSMetadataQueryDidFinishGatheringNotification 
              object:nil]; 

[self.metadataQuery startQuery]; 

Sorun, bu seçicileri hiçbiri aslında hiç geri çağırdı olmasıdır Bir kez bile değil ve özellikle buluttaki dosyaların karşıya yükleme/indirme işlemlerini izlemek için NSMetaDataQueryDidUpdateNotification'a ihtiyacım var.

Tuhaf bir şey, bu geçen gün çalışmış olmama rağmen, bir şekilde çalışmayı bıraktı ve aslında sorunun ne olduğunu anlamaya çalışırken kendimi körleştirdim. NSMetadataQueryDidStartGatheringNotification'a abone olarak başladığını görebiliyorum, ama asla bitmeyecekmiş gibi. Bu oldukça garip.

Yukarıdaki kodda neyin yanlış olacağı konusunda herhangi bir ipucu var mı diye merak ediyordum? Ya da başka nerede sorun için bakabilirim.

:)

+0

Bunun nesi yanlış olduğunu gördünüz mü? Bir cevabı çok isterim. – OlivaresF

+0

Maalesef, bunun nedenini hiç bir zaman anlamadım. Çevrimiçi olarak başka bir yerde herhangi bir açıklama bulamadım :(Yine de bir cevabı çok isterim. – CodingBeagle

+0

Tüm dosyaların bir listesini aramaya mı çalışıyorsunuz? Filepattern'in tek bir dosya türü olmasını denediniz mi, örneğin .txt? – OlivaresF

cevap

16

Eğer ana iş parçacığı NSMetadataQuery başlatmak emin olun zaman için teşekkür ederiz. O zaman bu gereklilik belgelenmedi.

+0

well THAT sinir bozucuydu, bu gönderi için teşekkürler –

+2

Bu 'startQuery' –

+0

altında belgeleniyor Bu, ana sıradaki veya NSMetadataQuery ile ilişkili sıraya sahip olduğunuzu belgelendiriyor. – Andy

1

Bu, kazmak için oldukça gizliydi. Şimdiye kadar vazgeçip vazgeçmediğinizi bilmiyorum ama en sonunda eninde sonunda yardım edebilirim.

Bazı (tümü?) C++ uygulama yapılandırmaları için, otomatik olarak çalışmayan bir ileti pompası çıkıyor.
// make it look syncronous for now while(m_state != finished) { Check_For_Interruption(); [[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:timeslice]]; //<--**this line is the key** }
geri aramalar doğru m_state değişkeni güncellemek için kurulum nerede: Benim uygulamasında, nihayet bu şu benim [m_query startQuery] çağrısı gibi bir döngü yerleştirdikten sonra benim beklenen geri aramalar getirmeye başladı.

Örneğim, döngüyü çalıştırmak için kendi iş parçacığı zaman dilimini kullanarak yalnızca bloklar (bir zaman aşımına ulaşıldığında kesintiye uğramadığı sürece), ancak bu eşzamansız bir şekilde de kurulabilir.

Başka bir şey eski desteğine denize gitmek isteyenler için not:
Bu yöntem uygulama OS X 10.9 ve üzeri üzerine mach portları sızıntı başlamasına neden yaptı. Yine de bundan daha yeni bir şeyle karşılaşmadım.

İlgili konular