Cora Data - iOS 7 上关于 Raywenderlich.com 中 How to Preload and Import Existing Data 的注解

在 Ray的教程中关于Core Data的第2篇文章中有一个问题一直没有被更新:在iOS 7下,如果你按照作者所述写完代码并运行,编译没有问题,但你会发现在最终结果的文件夹中不知有作者所说的4个文件,还有个xxxx.sqlit-wal 和 xxxx.sqlit-shm,然后用 SQLITE 的viewer 打开,数据库空一片片片。。。


原因,在这:https://developer.apple.com/library/ios/releasenotes/DataManagement/WhatsNew_CoreData_iOS/#//apple_ref/doc/uid/TP40013394-CH1-SW1

那就解决吧,在 managedObjectContext() 函数中做如下更改:(21,22,23 行),然后运行,去文件夹中看看,现在只有一个xxxx.sqlite文件了!!!

static NSManagedObjectContext *managedObjectContext()
{
    static NSManagedObjectContext *context = nil;
    if (context != nil) {
        return context;
    }

    @autoreleasepool {
        context = [[NSManagedObjectContext alloc] init];
        
        NSPersistentStoreCoordinator *coordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:managedObjectModel()];
        [context setPersistentStoreCoordinator:coordinator];
        
        NSString *STORE_TYPE = NSSQLiteStoreType;
        
        NSString *path = [[NSProcessInfo processInfo] arguments][0];
        path = [path stringByDeletingPathExtension];
        NSURL *url = [NSURL fileURLWithPath:[path stringByAppendingPathExtension:@"sqlite"]];
        
        NSError *error;
        NSDictionary *dict = @{@"journal_mode":@"DELETE"};
        NSDictionary *opts = @{NSSQLitePragmasOption:dict};
        NSPersistentStore *newStore = [coordinator addPersistentStoreWithType:STORE_TYPE configuration:nil URL:url options:opts error:&error];
        
        if (newStore == nil) {
            NSLog(@"Store Configuration Failure %@", ([error localizedDescription] != nil) ? [error localizedDescription] : @"Unknown Error");
        }
    }
    return context;
}


你可能感兴趣的:(iOS,ios,core,data,sqlite)