Следующий код является частью выборки данных (заполните данные в первый раз) частью моего tableViewController.Я использую NSManagedDocument managedObjectContext, чтобы заполнить (предварительно заполнить) мою базу данных.Источником является массив, который я очищаю из моего файла TXT, который находится непосредственно в папке ресурсов Xcode.После этого создания у меня есть случаи документов, такие как закрытый / открытый и обычный.
Следующий код вводит и корректно извлекает мои данные в таблицу с помощью запроса контроллера полученных результатов.Однако, когда данные загружаются в поток, который предназначен для освобождения пользовательского интерфейса от этого одноразового создания данных (26854 имен объектов) в тяжелой операции атрибута managedObject.name, просмотр таблицы и мой пользовательский интерфейс замораживаются (на 1-15 секунд, чтоя думаю, при заполнении в document.managedObjectContext в первый раз для моей базы данных).
Через 10-15 секунд данные загружаются и отображаются правильно.Однако, когда я останавливаю симулятор и перезапускаю приложение в симуляторе, хотя я сохраняю документ, как показано в приведенном ниже коде, и использую ту же настройку контроллера результатов выборки (и запрашиваю), табличное представление показывает пустое, в этом случае оно является подвижным.(Состояние документа на этом этапе показывает, что открыто и нормально, и путь к файлу один и тот же, я проверил ... Кажется, что ни автосохранение, ни явное сохранение для перезаписи я не использую работу ... Или это что-то еще? Я много чего пробовал, и яСкоро я сойду с ума. Я думаю, что это как-то связано с моей многопоточностью.
self.managedObjectNames - это свойство массива в табличном представлении, и я установил его из файла TXT во время loadView моего табличного представления:
Есть ли кто-нибудь, кто может показать здесь ошибку? Это то, что я даю self.managedObjectNames в методе категории создания сущностей.
Спасибо!
- (void)fetchDataIntoDocument:(UIManagedDocument *)document {
dispatch_queue_t fetchQ = dispatch_queue_create("Data fetcher", NULL);
dispatch_async(fetchQ, ^{
[document.managedObjectContext performBlock:^{
for (int i = 0; i < 26854; i++) {
[managedObject managedObjectWithId:[NSNumber numberWithInt:i] andArray:self.managedObjectNames inManagedObjectContext:document.managedObjectContext];
}
// NSLog(@"Save baby!!?");
[document saveToURL:document.fileURL forSaveOperation:UIDocumentSaveForOverwriting completionHandler:nil];
}];
});
dispatch_release(fetchQ);
}