Я делаю backup managrer для своего приложения (через iCloud). Я провел несколько тестов, и все заработало. Но через несколько дней все прекратилось. Я использую NSMetadataQuery
для поиска, существует ли файл резервной копии. Мои файлы резервных копий называются, например, Backup29112011154133.xml
где цифры обозначают дату резервного копирования (в формате ddMMyyyyHHmmss
). Я проверяю это в -viewDidAppear
:
- (void)viewDidAppear:(BOOL)animated {
[self checkForRemoteFile];
}
- (void)checkForRemoteFile {
NSURL *ubiq = [[NSFileManager defaultManager] URLForUbiquityContainerIdentifier:nil];
if (ubiq) {
NSMetadataQuery *query = [[NSMetadataQuery alloc] init];
[query setSearchScopes:[NSArray arrayWithObject:NSMetadataQueryUbiquitousDocumentsScope]];
NSPredicate *pred = [NSPredicate predicateWithFormat:@"%K like 'Backup*'",NSMetadataItemFSNameKey];
[query setPredicate:pred];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(queryDidFinishGathering:) name:NSMetadataQueryDidFinishGatheringNotification object:query];
[query startQuery];
} else {
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"iCloud is unavailable at the moment" message:nil delegate:self cancelButtonTitle:@"Close" otherButtonTitles:nil];
[alert setTag:TAG_ALERT_NOICLOUD];
[alert show];
}
}
- (void)queryDidFinishGathering:(NSNotification *)notif {
NSMetadataQuery *query = [notif object];
[query disableUpdates];
[query stopQuery];
[self loadRemoteFile:query];
[[NSNotificationCenter defaultCenter] removeObserver:self name:NSMetadataQueryDidFinishGatheringNotification object:query];
}
- (void)loadRemoteFile:(NSMetadataQuery *)query {
if ([query resultCount] == 1) {
canRestore = YES;
NSMetadataItem *item = [query resultAtIndex:0];
// parse the backup file
[self.tableView reloadData];
} else {
canRestore = NO;
modifDate = @"never";
backupInfoLoaded = YES;
[self.tableView reloadData];
}
}
Проблема в том, что - (void)queryDidFinishGathering:(NSNotification *)notif
никогда не выполняется. Я поместил туда breakpints и NSLogs ion, но ничего не произошло.
Я также пытался проверить другие уведомления, например, 'запрос начал собираться' и 'процесс запроса'. Появляется только уведомление 'запрос начался'.
У меня также есть AppID с зарегистрированным iCloud и прикрепленный файл с правами.
Не могли бы вы помочь мне разобраться, что происходит? Может я что-то упустил?