从一个iPhone应用程序重用现有Core Data存储到另一个iPhone应用程序

时间:2011-07-31 19:06:23

标签: iphone objective-c cocoa core-data

是否有一种方法可以使用现有的核心数据存储来自不同的应用程序,由同一个人发布并使用相同的com.company。*标识符?

用例是允许从lite版本升级到专业版的用户在启动免费版本后仍然拥有他们在lite版本中生成的所有数据。这有可能吗?

我想避免使用粘贴板或网址,这对我来说似乎很麻烦。理想情况下,我只是挂钩现有的核心数据并在应用程序之间共享。

4 个答案:

答案 0 :(得分:0)

您最好的选择是将整个CoreData数据库从较旧的应用程序转移到较新的应用程序,使用任何最佳的机制 - 我认为粘贴板有一种共享整个文件的方式。

您必须以某种方式传输文件,因为不允许一个应用程序查看其他应用程序空间。

您可能想要检查iOS5 iCloud支持作为在应用程序之间传输文件的机制,我们无法回答有关StackOverflow的问题,因为iOS5 API功能仍在NDA下。

答案 1 :(得分:0)

您可以为旧应用注册网址方案,并为新应用注册文件类型。新应用程序打开URL,旧应用程序将数据导出到新应用程序注册的扩展名的文件/文件夹中。 然后旧应用程序使用文档管理器“打开”导出的文件,然后调用新应用程序打开文件并导入它。

答案 2 :(得分:0)

无论您拥有NSPersistentStoreCoordinator类

更改:

if (![persistentStoreCoordinator_ addPersistentStoreWithType:NSSQLiteStoreType         configuration:nil URL:storeURL options:nil error:&error]) {

要:

if (![persistentStoreCoordinator_ addPersistentStoreWithType:NSSQLiteStoreType  configuration:nil URL:storeURL options:[NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithBool:YES],NSMigratePersistentStoresAutomaticallyOption, [NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption, nil] error:&error]) 

以这种方式设置选项会告知当前构建使用现有数据存储并将更改(如果有)迁移到您创建的数据存储的新版本中。我认为这适用于您的尝试,就像您更改了Apple Core Data Documentation中的“有信息”一样,并提供了更详细的说明。

答案 3 :(得分:0)

您可以在商店内设置应用,以使lite版本和pro版本显示为同一应用的不同版本。当用户升级时,较新版本安装在与旧版本相同的逻辑目录中,并且可以访问旧版本数据文件。