UIManagedDocument не записва на диск

Проследих курса по iOS 7 в Станфорд през есента на 2013 г. и свиквам с всички концепции, въпреки че срещам проблем с UIManagedDocument на Core Data и постоянното запазване.

Моето приложение е подобно на това за курсовете и всички модели/обекти работят добре и се показват правилно. Кодът не се различава много от предоставения материал; всичко с инстанциране, обработка на файлове, контекст на обекта и тези неща и с известно NSLog отстраняване на грешки и контрол за ръчно запазване се уверих, че контекстът запазва всички промени, направени в него (напр. чрез известието, което UIManagedDocument задейства).

Това, което НЕ работи, е запазването на тези неща във файла. Искам да кажа, че не го записва във файл, въпреки че казва, че запазва контекста. Мислех, че това е свързано с автоматично запазване, така че създадох бутон в потребителския интерфейс, за да направя това ръчно. Но все още няма постоянно запазване. Нямам идея как е възможно това. Първо проверих хранилището с приложението, като частите, които всъщност добавят обекти към документа, бяха деактивирани. След това преминах към използване на приложение на трета страна, което може да показва съдържанието на хранилище за приложения. Структурата е налице, но няма запазени данни.

Попаднах на уебсайт, където някой каза, че това може да е свързано с липсващи необходими стойности в модела при задаването на стойностите на обектите. Не е така, тестван с подклас от UIManagedDocument с това handleError: нещо.

Някой друг да е получил това? Структурата на данните е сравнително проста, само един обект с около 6 низа и един друг тип стойност. Не искам да публикувам целия код тук, тъй като е много. Ако имате подозрение какво може да бъде, мога да публикувам части от кода.

Код за създаване на документа в AppDelegate.m:

NSFileManager *fileManager = [NSFileManager defaultManager];
NSURL *documentsDirectory = [[fileManager URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject];

NSURL *url = [documentsDirectory URLByAppendingPathComponent:@"AppDocument"];

DebuggingManagedDocument *document = [[DebuggingManagedDocument alloc] initWithFileURL:url];


NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:
                         [NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption,
                         [NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption, nil];
document.persistentStoreOptions = options;


if ( [fileManager fileExistsAtPath:[url path]] ) {
    [document openWithCompletionHandler:^(BOOL success){
        if ( !success ) {
            NSLog(@"Could not open document.. :(");
        } else {
            [self documentIsReady:document];
        }
    }];
} else {
    // Create
    [document saveToURL:url forSaveOperation:UIDocumentSaveForCreating completionHandler:^(BOOL success){
        if ( !success ) {
            NSLog(@"Could not save document... :(");
        } else {
            NSLog(@"Saved document!!");
            [self documentIsReady:document];
        }
    }];
}

Код на

за разбирането


person Saphired    schedule 03.03.2014    source източник
comment
Можете ли да ни покажете вашия код? Особено там, където получавате контекста на обекта, създавате обекта и т.н.   -  person Enrico Susatyo    schedule 04.03.2014


Отговори (1)


Опитайте да използвате опцията за режим JOURNAL=DELETE persistentStoreCoordinator вместо режима WAL по подразбиране.

person Duncan Groenewald    schedule 14.03.2014