Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios .sqlite和.storedata之间有什么区别_Ios_Macos_Core Data - Fatal编程技术网

Ios .sqlite和.storedata之间有什么区别

Ios .sqlite和.storedata之间有什么区别,ios,macos,core-data,Ios,Macos,Core Data,当您使用核心数据在Xcode上启动一个新的iOS项目时,它会使用扩展名.sqlite初始化一个数据库。对OSX的新项目执行相同操作时,数据库具有扩展名.storedata 这两者有什么区别吗?谢谢 iOS上的CoreData仅支持sqlite持久存储。OSX上的CoreData支持多种格式,包括sqlite和xml,默认的持久存储是基于xml的。因此.sqlite是CoreData的sqlite持久存储,而.storedata是xml持久存储 为了扩展答案,sqlite持久存储允许部分和增量地加

当您使用核心数据在Xcode上启动一个新的iOS项目时,它会使用扩展名
.sqlite
初始化一个数据库。对OSX的新项目执行相同操作时,数据库具有扩展名
.storedata


这两者有什么区别吗?谢谢

iOS上的CoreData仅支持sqlite持久存储。OSX上的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]) {
致:


除此之外,扩展实际上没有任何特殊的相关性,它主要只是一种命名约定。有可能强制OSX创建sqlite数据库吗?我问这个问题是因为我有一些应用程序,我打算从已经预填充数据库的iOS转换。sqlite.Yes,是的。如果您仔细查看persistentStore方法,您会发现它们实际上在哪里创建存储并设置类型。请参阅答案中的其他注释。
NSURL *url = [applicationFilesDirectory URLByAppendingPathComponent:@"Foo.sqlite"];
NSPersistentStoreCoordinator *coordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:mom];
if (![coordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:url options:nil error:&error]) {