如何在 Core Data 和 Magical Record 中存储一系列电子邮件
Posted
技术标签:
【中文标题】如何在 Core Data 和 Magical Record 中存储一系列电子邮件【英文标题】:How do store an array of emails in Core Data and Magical Record 【发布时间】:2013-07-15 20:46:02 【问题描述】:我是 Core Data 和 Magical Record 的新手。我有一个这样的 JSON:
user:emails:["a@b.com","c@d.com"]
我最初计划将“电子邮件”字段存储为字符串并在检索时转换为真实电子邮件,但在使用 MagicalImport 导入 json 时,我收到以下错误:
* 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“属性值的不可接受类型:property = “invitedEmail”;所需类型 = NSString;给定类型 = __NSArrayI;值 = (
我可以将“emails”属性保持为字符串,并在存储时手动将“emails”数组 json 转换为字符串,但这似乎是一种 hack。必须有更清洁的方式!
【问题讨论】:
【参考方案1】:Hack 与否,将您的电子邮件放入逗号分隔的字符串中可能是一种解决方法,因为您无法将数组存储在核心数据中。
另一种选择是为电子邮件创建第二个实体(可能还有其他任何具有多对一类型关系的实体),然后将其与您的用户实体建立关系,但可能没有理由这样做。我只是将其存储为逗号分隔的字符串,然后就结束了。
【讨论】:
任何符合 nscoding 的数据类型都可以作为可转换属性存储在核心数据中。由于您使用的是字符串数组,因此这很容易实现。但是,我建议不要这样做,而是使用一个带有电子邮件字段(作为字符串)的单个实体,您可以对其进行搜索过滤和排序。 同意。可能,但对于这种情况不是一个好的解决方案。您必须花费循环对其进行编码和解码,并且正如您所说,您失去了对其进行查询的能力。 transformable 属性肯定有适用的情况,这不是一个。以上是关于如何在 Core Data 和 Magical Record 中存储一系列电子邮件的主要内容,如果未能解决你的问题,请参考以下文章
设置一对多关系 Core Data 和 Magical Record
使用 Kiwi、Core Data 和 Magical Record 进行单元测试
使用 Magical Record 将对象数组插入 Core Data
Plain Core Data vs Core Data + Magical Record