如何在sqlite核心数据文件之间正确切换?

时间:2014-11-14 16:28:34

标签: ios sqlite core-data

所以我目前在coredata文件之间切换时遇到了一些麻烦。方案如下:

1)有两个用户有权使用我的应用程序,每个用户都有自己的sqlite文件来表示他们自己的数据,因为需要分离关注点 2)当用户A注销并且用户B登录时......核心数据应切换到用户B的sqlite文件并仅存在于该文件中。

如果我删除用户A的PSC并为用户B创建一个新的PSC,我是在安全区还是我错过了更多步骤?我注意到用户A的一些数据最终会出现在用户B的核心数据中。

1 个答案:

答案 0 :(得分:0)

如果要在持久性存储文件之间切换,并且无法从一个连接到另一个的数据,则需要拆除整个Core Data堆栈,然后重新创建它。这意味着:

  • 所有NSPersistentStoreCoordinator s
  • 所有NSManagedObjectContext s
  • 您在应用中的任何位置从Core Data加载的所有托管对象

每个都需要替换为新实例,就像应用首次启动时一样。因此,有时最好还拆除整个UI,从初始视图控制器重新加载所有内容。

如果您已将托管对象中的数据复制到其他位置(其他属性或UI元素),您还需要确保将其删除。

NSManagedObjectModel可以保留,因为它永远不会保存持久存储中的任何数据。