Question

I followed the Stanford iOS 7 course of Fall 2013 and I'm getting used to all the concepts, though I encounter a problem with Core Data's UIManagedDocument and persistent saving.

My application is similar to the courses one, and all the Model/Object works fine and displays correctly. The code does not differ much from the provided material; all with instantiation, file handling, object context and that stuff and with some NSLog debugging and manual save control I made sure, the context saves all the changes made to it (e.g. via the notification the UIManagedDocument fires).

What does NOT work is keeping that stuff on file. I mean, it does not save it to file, though it says it saves the context. I thought that was related to autosaving, so I created a Button in the UI to manually do that. But still no persistent save. I have no idea how that can be. I checked the storage first with the App with the parts that actually add objects to the document being disabled. Then I moved on to use a third party app that can display the contents of an apps storage. The structure is there, but no saved data.

I came across a website, where someone said that can be related to missing any required values in the model when setting the objects values. Not the case, tested with a subclass of UIManagedDocument with that handleError: thing.

Anyone else got this? Data structure is fairly simple, just one entitity with about 6 strings and one other type of value. I don't want to post all the code here, since it's a lot. If you have a suspicion on what it can be I can post parts of the code.

Code of creating the document in 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];
        }
    }];
}

Code of

Regards

No correct solution

OTHER TIPS

Try using the JOURNAL=DELETE mode persistentStoreCoordinator option instead of the default WAL mode.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top