1
- 하나의 노래를 다운로드하고 iCloud에 동기화합니다.
- 설정 -> iCloud -> 저장소 관리 -> 내 응용 프로그램으로 이동하여 모든 파일을 삭제합니다.
- 나는 내 응용 프로그램에 가서 (NSMetadataQueryDidFinishGatheringNotification 및 NSMetadataQueryDidUpdateNotification)에서 알림을 확인 -> NSMetadataQuery.results 1 개 항목 (이전 값)
가 사전에 대단히 감사를 반환합니다.iCloud : 설정 장치에서 파일을 삭제할 때 NSMetadataQuery가 잘못된 결과를 반환합니다.
enter code here
- (void)processiCloudFiles:(NSNotification *)notification {
[_query disableUpdates];
[_iCloudNames removeAllObjects];
int totalItems = _query.resultCount; // it not update here
//OR: _query.results
}
- (void)startQuerying {
[self stopQuery];
_query = [self documentQuery];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(processiCloudFiles:)
name:NSMetadataQueryDidFinishGatheringNotification
object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(processiCloudFiles:)
name:NSMetadataQueryDidUpdateNotification
object:nil];
[_query startQuery];
}
- (void)stopQuery {
if (_query) {
[[NSNotificationCenter defaultCenter] removeObserver:self name:NSMetadataQueryDidFinishGatheringNotification object:nil];
[[NSNotificationCenter defaultCenter] removeObserver:self name:NSMetadataQueryDidUpdateNotification object:nil];
[_query stopQuery];
_query = nil;
}
}
- (NSMetadataQuery *)documentQuery {
NSMetadataQuery * query = [[NSMetadataQuery alloc] init];
if (query) {
[query setSearchScopes:[NSArray arrayWithObject:NSMetadataQueryUbiquitousDocumentsScope]];
NSString * filePattern = [NSString stringWithFormat:@"*.%@", FILE_EXTENSION];
[query setPredicate:[NSPredicate predicateWithFormat:@"%K LIKE %@",
NSMetadataItemFSNameKey, filePattern]];
}
return query;
}
언젠가 NSMetadataQuery가 잘못된 값을 반환합니다. 이 문제를 해결하기 위해 tmp 파일을 추가하고이 파일을 iCloud에 업로드하기 전에 삭제하십시오. – nmh