我可以在一个应用程序中创build一个核心数据对象图,然后在另一个预设状态下使用它吗?

现在,我的应用程序拥有大约5,000个词典的.plist,在运行时,我使用它来创build自定义类的5,000个对象。 每个包含几个string,一些布尔值等等。这是一个相当快的过程,需要几秒钟的时间,但是使用一个包含数千个对象的.plist有点笨拙。

我将迁移到Core Data(我以前从未使用过),所以最初的步骤是将数据从.plist获取到这些自定义对象中,然后将其保存在上下文中。 我观看过这些video,并且认为我可以做到这一点。

我的第一个问题是: 我可以在一个小的,独立的应用程序(称为ObjectMaker)中创build对象graphics和数据模型,然后将其保存在那里,然后导入.sqlite或任何格式的数据导出到实际的应用程序中在做什么? 从那里,我会执行所有的获取请求,进一步编辑和保存数据等。

我的第二个问题是: 是否有可能提供一个对象图的“首次启动状态”,用户可以首先打开我的应用程序(这些对象已经准备好并准备好被访问/查询等等)?我喜欢应用程序以.sqlite或任何格式将数据导出到ObjectMaker应用程序中,并且完全使用它,而不知道.plist是否存在。

非常感谢任何和所有的答案^ _ ^

我们经常使用我们的许多应用程序。 在开发过程中,我们构build了数据模型,但是通常需要导入一堆主数据,并执行一些默认的应用程序configuration,以达到我们将要运送产品的sqlite数据库的“初始状态”。

在应用程序委托中,我们有一个#define(或variables),可以用来切换“数据库创build和导入”模式。 运行创build模式时,我们删除任何现有的.sqlite文件,重新初始化核心数据堆栈,然后运行导入例程将我们的.plist和.csv数据转换为所需的核心数据对象。

我们使用模拟器并构build并运行。 一旦我们导入了数据,并configuration了应用程序的默认选项,我们将导航到包含正在执行的应用程序的模拟器文件夹,然后复制数据库并将其放回到项目文件中。

当“数据库创build和导入”模式未启用时,它首先检查数据库是否在正确的位置。 如果不是,则将主包中的默认数据库复制到设备上的适当位置。

我的第一个问题是:我可以在一个小的,独立的应用程序(称为ObjectMaker)中创build对象graphics和数据模型,然后将其保存在那里,然后导入.sqlite或任何格式的数据导出到实际的应用程序中在做什么? 从那里,我会执行所有的获取请求,进一步编辑和保存数据等。

当然。 您可以在您的ObjectMaker应用程序中创build您的SQL商店。 一旦完成,你可以把你的应用程序的主要包中的商店和复制(你必须自己做)。

在启动时,应用程序会将商店复制到如下所示的主文件夹中。 持久性商店必须指向该文件夹商店。

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]; } } 

我的第二个问题是:是否有可能提供一个对象图的“首次启动状态”,用户可以首先打开我的应用程序(这些对象已经准备好并准备好被访问/查询等等)?我喜欢应用程序以.sqlite或任何格式将数据导出到ObjectMaker应用程序中,并且完全使用它,而不知道.plist是否存在。

关于这个问题,我不明白你的目标,但我会尝试提供一些提示。 首先,我不太确定一个用户会一次使用5000个对象。 所以你可以显示一堆执行临时查询( NSFetchRequest ),只有在请求时才显示它们。 另外,如果你需要通过表格显示对象,我真的build议玩NSFetchedResultsController 。 这个class是为了这个。 它允许对数据有更多的控制,让Core Data为你做内存pipe理。 例如,它允许指定检索多less个对象(比如说10)。 滚动表格,其他10个对象将被提取,等等…

希望有所帮助。 如果你需要别的东西,让我知道。

Interesting Posts