iOS 开发:我可以在 Core Data 对象中存储整数数组而不创建新表来表示数组吗?

Posted

技术标签:

【中文标题】iOS 开发:我可以在 Core Data 对象中存储整数数组而不创建新表来表示数组吗?【英文标题】:iOS Development: Can I store an array of integers in a Core Data object without creating a new table to represent the array? 【发布时间】:2010-12-27 21:42:56 【问题描述】:

我正在使用 Core Data,我正在尝试找出将整数数组存储在我的一个 Core Data 实体中的最简单方法。目前,我的实体包含比单个数字更复杂的各种对象数组,因此将这些数组表示为我的数据库中的表并使用关系附加它们是有意义的。如果我想存储一个简单的整数数组,是否需要创建一个具有单列的新表并使用一对多关系附加它?还是有更简单的方法?

提前感谢您的智慧!

【问题讨论】:

(添加了一个答案,建议通过componentsJoinedByString 将数组转换为字符串并稍后通过componentsSeparatedByString 将它们分离出来,但后来意识到第一次转换需要转换每个整数首先转换为 NSNumber,因为整数没有 descriptions,并且在将 NSStrings 数组拉回时,您必须将它们转换为整数。可能开销太大。 【参考方案1】:

Chris Hanson 已经对这个问题给出了很好的答案,如果你真的想将 NSArray 存储为核心数据属性,请查看transformable attributes

【讨论】:

我认为 Chris Hanson 没有回答这个问题。 Chris Hanson 所描述的内容并不真正适用于您只有一个不需要进行任何搜索的整数数组的情况。假设整数实际上是枚举。我真的应该有一个表,因为它被许多其他对象引用,所以一遍又一遍地重复相同的枚举吗?【参考方案2】:

对于整数数组,我会使用 Binary 属性 - 这是一个 NSData。 NSData 有很多访问器/修改器方法。如果您需要/想要保留一个可变副本,那么您可以使用 NSMutableData 作为缓存 - 并将其(作为 NSData)持久化为有意义的。

我将它用于一长串双打列表——对我来说,它代表收集的数据集。这对我有用,因为我不需要将单个数据点链接到模型中的其他对象。在运行时,我解压缩这些数据集并使用它们来渲染图形线。那时,我可以产生某种相关性——但这种相关性需要推导出来。

【讨论】:

以上是关于iOS 开发:我可以在 Core Data 对象中存储整数数组而不创建新表来表示数组吗?的主要内容,如果未能解决你的问题,请参考以下文章

在 iOS 中对来自 Core Data 的实体的 NSArray 进行快速枚举时出现运行时错误

iOS开发学习之Core Data

Core Data 不保存对象而且速度很慢

对象管理器 getObject:self 方法上的 RestKit 和 Core Data 实体崩溃

操作简单的 Core Data 对象时崩溃

使用存储的 JSON 而不是 Core Data