您的位置:首页 > 移动开发 > IOS开发

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

2014-01-08 00:28 525 查看
在 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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐