以核心数据实体作为属性的子类 UITextField

Posted

技术标签:

【中文标题】以核心数据实体作为属性的子类 UITextField【英文标题】:Subclass UITextField with a core-data entity as a property 【发布时间】:2014-04-17 19:04:43 【问题描述】:

我想将一个核心数据实体绑定到一个 UITextField,这样每当 textField 完成编辑时,它就会自动更新核心数据对象。

这就是我希望它的工作方式——不确定是否可行。

user 是核心数据实体 user.gender 是该实体的字段 genderField 是一个 UITextField

genderField.coreDataObject 是一个 NSManagedObject 属性

    用户将内容键入genderField 完成后,genderField 触发 didEndEditingdidEndEditing 中,genderField 通过说genderField.coreDataObject = genderField.text 设置user.gender

问题在于 coreDataObject 是 user 而不是 user.gender。所以,首先,你不能设置coreDataObject等于一个字符串。

我需要存储coreDataObject,然后以某种方式设置coreDataObject.gender = genderField.text

谢谢。

【问题讨论】:

错误/正在发生什么?它会崩溃吗? 刚刚更新了我的问题,因为我不清楚。问题是 coreDataObject 是用户而不是 user.gender。因此,您不能将 coreDataObject 设置为等于字符串。我需要设置coreDataObject.gender = genderField.text,但不确定如何访问该属性 您是否为NSManagedObject 实体生成了类?如果没有尝试[genderField.coreDataObject setValue:genderField.text forKey:@"gender"] 哇——太棒了!这样可行!好吧,我没有意识到你可以这样设置。如果您想将其作为答案放在下面,我会将其标记为正确答案 作为附录,您是否考虑过为您的实体生成 NSManagedObject 子类?这将使通过标准 getter/setter 访问它们的属性成为可能,并为您提供所有那些甜蜜、甜蜜、编译时检查。 【参考方案1】:

您可以生成自定义子类 NSManagedObject 或使用键值编码。

[genderField.coreDataObject setValue:genderField.text forKey:@"gender"]

正如 AlexDG 所回应的那样,您最终还是沿着生成路线走可能会更好。但目前,上述方法可以满足您的需求!

有关生成自己的类的更多信息,请参阅this answer!

【讨论】:

以上是关于以核心数据实体作为属性的子类 UITextField的主要内容,如果未能解决你的问题,请参考以下文章

如何在核心数据中以编程方式创建超类/子类?

“子类”核心数据模型

为啥我不能使用“描述”作为核心数据实体的属性名称?

访问核心数据实体的 NSString 属性

使用用户信息条目记录核心数据实体属性

最佳实践? - 数组/字典作为核心数据实体属性 [关闭]