2012-02-15 5 views
0

Так что это отстой. Попытка заполнить базовую базу данных информацией из NSDictionaries.Основные данные «Connection Invalid»

Я открываю UIManaged Document, используя код ниже, блок обработчика завершения вызывает метод, который рекурсивно заполняет словарь из API и добавляет сущность для базы данных для каждого из них.

Файл базы данных создается просто отлично, словарь заполняется нормально, а объект объекта также заполнен, но по какой-то причине информация не записывается в базу данных, хотя иногда она работает, я не конечно, если что-то другое.

я получаю сообщение в консоли, которая говорит:

"NSFileCoordinator:. Удивительная ошибка сервера была сигнализировали Подробность: Подключение недействительны"

всякий раз, когда методы openWithCompletionHandler или saveToURL: forSaveOperation: withCompletionHandler бежать.

Я не могу понять, почему приведенный ниже код не работает, учитывая, что он вырезан и вставлен из курса iPhone в Стэнфорде.

Я пробовал удалять приложение с симулятора, но без разницы. Спасибо, благодарю.

+ (void)populateDatabase 
{ 
// Get URL -> "<Documents Directory>/<TrailerDB>" 
NSURL *url = [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject]; 

url = [url URLByAppendingPathComponent:@"TrailerDB"]; 

UIManagedDocument *doc = [[UIManagedDocument alloc] initWithFileURL:url]; 

// If document exists on disk... 

if (![[NSFileManager defaultManager] fileExistsAtPath:[url path]]) 
{ 
    [doc saveToURL:url 
    forSaveOperation:UIDocumentSaveForCreating 
completionHandler:^(BOOL success) 
    { 

     if (success) [self fillDatabase:doc.managedObjectContext]; 

     if (!success) NSLog(@"couldn’t open document at %@", url); 
    }]; 

} else { 

    if (doc.documentState == UIDocumentStateClosed) { 
     // exists on disk, but we need to open it 
     [doc openWithCompletionHandler:^(BOOL success) 
     { 

      if (success) [self fillDatabase:doc.managedObjectContext]; 

      if (!success) NSLog(@"couldn’t open document at %@", url); 
     }]; 
    } else if (doc.documentState == UIDocumentStateNormal) 
    { 
     [self fillDatabase:doc.managedObjectContext]; 
    } 
} 
} 

ответ

3

После fillDatabase, попробуйте вызвать этот метод:

[doc saveToURL:doc.fileURL forSaveOperation:UIDocumentSaveForOverwriting completionHandler:^(BOOL success) 
{ 
    if (success == NO) 
    { 
     NSLog(@"Save operation failed!"); 
    } 
}]; 
+0

Yep веселит Даниил, я на самом деле понял это, но не разрешили ответить на мой собственный вопрос! Кажется, сообщение об ошибке, которое я получил, было безвредным. Я проверил, и он также появляется в моем другом приложении, которое использует тот же код и полностью функционирует. – Alan

Смежные вопросы