当您使用核心数据在 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]) {
to:
NSURL *url = [applicationFilesDirectory URLByAppendingPathComponent:@"Foo.sqlite"];
NSPersistentStoreCoordinator *coordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:mom];
if (![coordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:url options:nil error:&error]) {
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)