私が書いている iCloud プラグインでは、iCloud マネージャー クラスをこれらの iCloud NSMetaDataQuery オブザーバーにサブスクライブします。
// 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];
問題は、これらのセレクターが実際には一度もコールバックされないことです。特に、クラウド内のファイルのアップロード/ダウンロードの進行状況を追跡するには、 NSMetaDataQueryDidUpdateNotificationが必要です。
奇妙なことに、先日これが機能していたのですが、どういうわけか機能しなくなり、問題が実際に何であるかを理解しようとして盲目になりました. NSMetadataQueryDidStartGatheringNotificationをサブスクライブすることで、開始することはわかりますが、終了しないようです。それはかなり奇妙です。
上記のコードの何が問題なのか、誰かが何か手がかりを持っているかどうか疑問に思っていましたか? または、どこで問題を探すことができますか。
お時間をいただきありがとうございます:)