以编程方式将 NSManagedObject -subclass ( User ) 实例转换为其子类 ( AccountUser ) 实例的最佳方法是什么?

设置
AccountUser 继承自 User : NSManagedObject
当我第一次注册或登录应用程序时,我成为了 AccountUser 。然后,我下载我所有的 friend 并将它们存储为 User 对象。
UserAccountUser 都有属性 firstNamelastName 等。 AccountUser 有一些额外的东西,比如 accessToken

问题

我的 friend 约翰登录我的设备。由于他是我的 friend ,他已经存储为 User 。但是现在,我想将他转换为 AccountUser 。以编程方式执行此操作的最佳方法是什么?我有很多属性和关系要保留,因此从 AccountUser 对象创建一个新的 User 对象,然后删除原始 User 对象有很多工作要做。如果我只是创建一个 AccountUser 而不删除 User ,事情就会变得一团糟。例如。当我通过 ID 获取 User 时,我得到两个对象:一个是 AccountUser ,另一个是 User

最佳答案

一种方法是简单地创建一个新的 AccountUser 对象并将相关字段从现有的 User 对象复制到其中。然后适本地处理旧的 User 对象——删除它,保存它,任何有意义的事情。给 AccountUser 一个带有 User 实例的初始化程序是有意义的,比如 -initWithUser:

另一个(可能更好)的选择是为所有用户使用一个类(用户)。如果要为某些用户(当前为 AccountUsers)存储其他信息,请创建一个新的 Account 类并将 Account 的实例与需要它的用户相关联。因此,代表您和您的 friend John 的 User 对象每个都有关联的 Account 对象,而所有其他用户则没有。当您的其他 friend 登录您的手机时,您可以为该人创建一个新的 Account 对象,并将其与他们现有的 User 对象相关联。

关于iphone - Core Data 将父类(super class)实例转换为子类实例?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8577561/

10-13 03:43