繁体   English   中英

.sqlite和.storedata有什么区别

[英]What is the difference between .sqlite and .storedata

当您使用核心数据在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]) {

至:

NSURL *url = [applicationFilesDirectory URLByAppendingPathComponent:@"Foo.sqlite"];
NSPersistentStoreCoordinator *coordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:mom];
if (![coordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:url options:nil error:&error]) {

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM