Spa*_*Dog 4 macos core-data ios
当您使用核心数据在Xcode上启动新的iOS项目时,它会使用扩展名初始化数据库.sqlite.当您为OSX的新项目执行相同的操作时,数据库具有扩展名.storedata.
这两者有什么区别吗?谢谢.
iOS上的CoreData仅支持sqlite持久性存储.OS X上的CoreData支持多种格式,包括sqlite和xml,默认持久性存储是基于xml的.因此.sqlite是CoreData的sqlite持久性存储,而.storedata是xml持久性存储.
为了扩展答案,sqlite持久性存储允许模型部分和增量加载,而xml持久性存储仅允许(要求)模型加载模型.默认值的差异可能是由两个平台上的不同内存可用性所解释的.在典型的Mac上有更多可用内存,通过一次加载所有内容可以提高整体性能.
要将默认代码切换为使用sqlite而不是xml,请编辑persistentStoreCoordinator并更改:
NSURL *url = [applicationFilesDirectory URLByAppendingPathComponent:@"Foo.storedata"];
NSPersistentStoreCoordinator *coordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:mom];
if (![coordinator addPersistentStoreWithType:NSXMLStoreType configuration:nil URL:url options:nil error:&error]) {
Run Code Online (Sandbox Code Playgroud)
至:
NSURL *url = [applicationFilesDirectory URLByAppendingPathComponent:@"Foo.sqlite"];
NSPersistentStoreCoordinator *coordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:mom];
if (![coordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:url options:nil error:&error]) {
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1755 次 |
| 最近记录: |