gpt4 book ai didi

ios - 一个类的不同对象的两个持久存储

转载 作者:行者123 更新时间:2023-11-29 10:42:54 26 4
gpt4 key购买 nike

我的应用程序是另一个待办事项管理器。它具有 Todolist 类,可以是本地(私有(private)列表)或共享列表。与私有(private)列表相关的所有数据都存储在本地(核心数据 + SQLite 存储)。与共享列表相关的数据必须在本地和远程存储(以便所有共享列表成员都能够将他们的交易添加到列表中)。远程持久存储由 Parse Cloud 通过 PFIncrementalStore 提供支持。所以我的目标是将本地存储的共享列表待办事项与远程存储的待办事项同步。

这里引用核心数据编程指南:

A coordinator can only be associated with one managed object model. If you want to put different entities into different stores, you must partition your model entities by defining configurations within the managed object models

这是否意味着我应该为共享列表和待办事项创建单独的数据模型配置?或者简单地使用 NSManagedObjectContext 方法重新分配对象 - (void)assignObject:(id)object toPersistentStore:(NSPersistentStore *)store 就足够了吗?

我如何看待解决方案:当我处理共享列表时,我将其分配给 PFIncrementalStore,另一方面(处理私有(private)列表)我将其分配给标准本地存储 (NSSQLiteStoreType) .

我做对了吗?任何建议表示赞赏。谢谢。

最佳答案

配置在这里没有用,除非你的本地和远程待办事项是不同的实体类型,或者你有其他实体应该只存在于一个持久存储文件中。当该引用提到“不同的实体”时,它们指的是不同的实体类型,而不是同一实体类型的不同实例。

此外,您不能使用 assignObject:toPersistentStore: 将对象从一个持久存储移动到另一个持久存储。如果您查看该方法的文档,您会发现它仅适用于“新插入的对象”。这意味着如果您创建一个新的托管对象,该对象不与任何托管对象上下文相关联(即在创建它时为上下文传递 nil 值的对象),您可以告诉 NSManagedObjectContext 插入它进入自身并使用特定的存储文件。至关重要的是,您不能对已经属于上下文和存储的对象使用此方法,因此您不能使用它将对象从一个存储移动到另一个存储。

要按照您的描述移动对象,您需要执行以下操作:

  1. 在目标商店中创建一个新实例
  2. 将旧对象的所有属性复制到新对象
  3. 删除旧的,保存新的

没有内置支持将对象从一个商店移动到另一个商店。

关于ios - 一个类的不同对象的两个持久存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23652658/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com