Ios 我是否可以在一个应用程序中创建核心数据对象图,然后从预设状态在另一个应用程序中使用它?
我的应用程序现在有一个大约5000个字典的.plist,在运行时,我用它来创建5000个自定义类的对象。每一个都包含一些字符串、一些布尔值等。这是一个相当快速的过程,最多需要几秒钟,但使用.plist处理数千个对象有点笨拙 我将迁移到核心数据(我以前从未使用过),因此第一步是将.plist中的数据获取到这些自定义对象中,然后将它们保存在上下文中。我看了视频之类的,我想我会没事的 我的第一个问题是:我是否可以在一个单独的小应用程序(比如称为ObjectMaker)中创建对象图和数据模型,然后将其保存在那里,并将.sqlite或任何格式的数据导出到我正在制作的实际应用程序中?从那里,我将执行所有提取请求,进一步编辑和保存数据,等等 我的第二个问题是:是否可以提供用户在第一次打开我的应用程序时将获得的对象图的“首次启动状态”(这5000个对象已经准备好,可以访问/查询,等等?我希望该应用程序附带.sqlite或我在ObjectMaker应用程序中导出数据的任何格式,并在不知道.plist存在的情况下专门使用它们 非常感谢您的回答^_^ 我的第一个问题是:我可以在中创建对象图和数据模型吗 一个单独的小应用程序(比如称为ObjectMaker),然后保存在那里, 并将.sqlite或任何格式的数据导出到 我正在制作的实际应用程序?从那里,我将执行所有的获取操作 请求、进一步编辑和保存数据等 当然可以。您可以在ObjectMaker应用程序中创建sql存储。完成后,您可以将该存储复制到应用程序的主捆绑包中(您必须自己复制) 启动时,应用程序会将存储复制到主文件夹中,如下所示。永久存储必须指向该文件夹存储Ios 我是否可以在一个应用程序中创建核心数据对象图,然后从预设状态在另一个应用程序中使用它?,ios,objective-c,core-data,object-graph,Ios,Objective C,Core Data,Object Graph,我的应用程序现在有一个大约5000个字典的.plist,在运行时,我用它来创建5000个自定义类的对象。每一个都包含一些字符串、一些布尔值等。这是一个相当快速的过程,最多需要几秒钟,但使用.plist处理数千个对象有点笨拙 我将迁移到核心数据(我以前从未使用过),因此第一步是将.plist中的数据获取到这些自定义对象中,然后将它们保存在上下文中。我看了视频之类的,我想我会没事的 我的第一个问题是:我是否可以在一个单独的小应用程序(比如称为ObjectMaker)中创建对象图和数据模型,然后将其保
NSString *storePath = [[self applicationDocumentsDirectory]
stringByAppendingPathComponent: @"yourStore.sqlite"];
NSURL *storeUrl = [NSURL fileURLWithPath:storePath];
NSFileManager *fileManager = [NSFileManager defaultManager];
if (![fileManager fileExistsAtPath:storePath]) {
NSString *defaultStorePath = [[NSBundle mainBundle]
pathForResource:@"yourStore" ofType:@"sqlite"];
if (defaultStorePath) {
[fileManager copyItemAtPath:defaultStorePath toPath:storePath error:NULL];
}
}
我的第二个问题是:是否可以提供“首次发射”
用户第一次打开my时将获得的对象图的“状态”
应用程序(其中5000个对象已准备就绪,可以访问/
我希望这个应用程序附带.sqlite或其他什么
将数据导出到ObjectMaker应用程序中的格式,并使用该格式
唯一的,永远不知道.plist的存在
关于这个问题,我不明白你的目标,但我会尝试提供一些提示。
首先,我不确定一个用户是否会一次使用5000个对象,因此可以显示一组执行特殊查询的对象(NSFetchRequest
)仅在请求时显示它们。此外,如果您需要通过表显示对象,我建议您使用nsfetchedresultscoontroller
。该类就是用于此目的的。它允许对数据进行更多控制,并允许核心数据为您执行内存管理。例如,它允许指定要检索的对象数量(比如说10)。滚动表格,将获取其他10个对象,依此类推
希望这能有所帮助。如果您还需要其他信息,请告诉我。我们在很多应用程序中都经常这样做。在开发过程中,我们构建了数据模型,但通常需要导入大量主数据并执行一些默认的应用程序配置以达到“初始状态”我们将随产品一起发布的sqlite数据库 在app delegate中,我们有一个#define(或变量),可用于切换“DB create&import”模式。在运行创建模式时,我们删除任何现有的.sqlite文件,重新初始化核心数据堆栈,然后运行导入例程将.plist和.csv数据转换为所需的核心数据对象 我们使用模拟器并构建和运行。导入数据和配置应用程序的默认选项后,我们导航到包含您正在执行的应用程序的模拟器文件夹,复制数据库并将其放回项目文件中
当“DB create&import”模式未启用时,它首先检查是否在正确的位置有数据库。如果没有,它会将默认数据库从主捆绑包复制到设备上的正确位置。因此我尝试这种方法,但我得到了“reason=”用于打开存储的模型与用于创建存储的模型不兼容“我已尝试清除Xcode/sim/deriveddata,但每次都会出现此错误。听起来您更改了数据模型,但没有对其进行正确的版本控制。您需要删除现有数据库或删除最近的更改…正确增加数据模型的版本,然后重新应用更改。