NSMetadataQuery не завершает сбор (нет уведомления)

Я делаю 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 и прикрепленный файл с правами.

Не могли бы вы помочь мне разобраться, что происходит? Может я что-то упустил?

5
задан akashivskyy 3 December 2011 в 10:01
поделиться