以编程方式将NSManagedObject
- 子类(User
)实例转换为其子类(AccountUser
)实例的最佳方法是什么?
AccountUser
继承自User
:NSManagedObject
当我第一次注册或登录应用时,我变成了AccountUser
。然后,我下载所有朋友并将其存储为User
个对象。
User
& AccountUser
具有firstName
,lastName
等属性。AccountUser
还有一些额外的内容,例如accessToken
。
我的朋友John登录我的设备。由于他是我的朋友,他已经存储为User
。但是现在,我想把他变成AccountUser
。以编程方式执行此操作的最佳方法是什么?我有很多属性和关系要保留,因此从AccountUser
对象创建一个新的User
对象,然后删除原始的User
对象是很多事情。如果我只是在不删除AccountUser
的情况下创建User
,那么事情会变得混乱。例如。当我按ID获取User
时,我会收到两个对象:一个是AccountUser
,另一个是User
。
答案 0 :(得分:6)
一种方法是简单地创建一个新的AccountUser对象,并将现有User对象中的相关字段复制到其中。然后适当地处理旧的User对象 - 删除它,保存它,无论什么都有意义。为AccountUser提供一个带有User实例的初始化程序是有意义的,例如-initWithUser:
。
另一个(可能更好)选项将涉及为所有用户使用单个类(User)。如果要为某些用户(当前是AccountUsers)存储其他信息,请创建一个新的Account类,并将Account的实例与需要它的用户相关联。因此,代表您和您的朋友John的User对象将各自具有关联的Account对象,而所有其他用户则不会。当您的其他朋友登录到您的手机时,您可以为该人创建一个新的帐户对象,并将其与现有的用户对象关联。
答案 1 :(得分:0)
也许你可以这样做
如果用户没有帐户信息,则“is_account_user”将为NO;
当您获取用户时,您可以检查is_account_user是否为YES,如果是,您可以获得他的AcountUser关系。
希望有所帮助