iOS5 SDK, Core Data и создание новой БД.Причудливый вопрос - PullRequest
0 голосов
/ 20 февраля 2012

У меня странная проблема.Я пишу метод, который обрабатывает создание базы данных с основными данными, которая сначала проверяет, существует ли база данных, прежде чем открывать ее (если она найдена) или создавать ее (если она не найдена).Вот код:

- (void) loadClubs
{
    NSLog(@"Checking for club database.");

    NSLog(@"file url: %@", self.clubDatabase.fileURL.path);


    if(![[NSFileManager defaultManager] fileExistsAtPath:[self.clubDatabase.fileURL path]])
    {
        NSLog(@"Creating club database.");

        //_clubDatabase saveToURL:<#(NSURL *)#> forSaveOperation:<#(UIDocumentSaveOperation)#> completionHandler:<#^(BOOL success)completionHandler#>

        [self.clubDatabase saveToURL: self.clubDatabase.fileURL forSaveOperation: UIDocumentSaveForCreating completionHandler:^(BOOL success){
            NSLog(@"test");
        }];
            //NSLog(@"Created new database.");
            //[self fetchClubData:self.clubDatabase];


    }
    else if (self.clubDatabase.documentState == UIDocumentStateClosed)
    {
        NSLog(@"Opening club database.");

        [self.clubDatabase openWithCompletionHandler:^(BOOL success)
        {
            NSLog(@"Opened club database.");
            [self fetchClubData:self.clubDatabase];
        }];
    }
    else if (self.clubDatabase.documentState == UIDocumentStateNormal)
    {
        [self fetchClubData:self.clubDatabase];
        NSLog(@"Club database is open. Proceeding as normal.");
    }
}

Но у меня действительно странная проблема: когда я вызываю [self.clubDatabase saveToURL: self.clubDatabase.fileURL forSaveOperation: UIDocumentSaveForCreating completeHandler: ^ (успех BOOL) ..обработчик завершения не выполняется !!Я понятия не имею, что может быть причиной этого.Есть мысли?

Я пробовал:

  • Проход по GDB
  • Вызов _clubDatabase вместо выборки с использованием получателя
  • Тестирование другого завершенияобработчики в Core Data (которые работают!)

Я понятия не имею, что вызывает это.Есть мысли?

Спасибо большое !!

- Андрей

1 Ответ

0 голосов
/ 22 февраля 2012

К вашему сведению, для других, испытывающих нечто подобное, я думаю, что у меня было "ага!"момент.Кажется, что saveToURL выполняется асинхронно, и, следовательно, ошибка в viewcontroller, вызываемая после этого метода (последовательно), может вызывать сбой и, таким образом, предотвращать вызов обработчика завершения.Я должен это проверить, но это единственное, что имеет смысл на данный момент.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...