将 NSNumber* 的 NSArray 存储为 Core Data 中的 NSString

Posted

技术标签:

【中文标题】将 NSNumber* 的 NSArray 存储为 Core Data 中的 NSString【英文标题】:Store NSArray of NSNumber* as NSString in Core Data 【发布时间】:2014-02-27 09:58:59 【问题描述】:

我需要一个 NSNumber* 数组作为 Core Data 中实体的属性。我想我可以将它们存储为字符串,然后在我的 DAL 中我可以将它们全部视为 NSNumber* 的数组,然后将数组解析为一个字符串,每个值之间都有一个空格。我可以将“间隔”设置并获取为 NSNumber* 的数组,但实际上将它们存储为字符串。这是一个坏主意吗??有没有更好的方法来做到这一点?

我从这个答案中得到了这样做的想法:Store NSArray In Core Data Sample Code?

【问题讨论】:

为什么要将数组存储在单个字段中? 【参考方案1】:

您可以将您的数字保存为 NSString 分隔,并在使用此代码从此 NSString 获取和数组之后。

//Get your string of numbers from CoreData
NSString *stringNumbers = [[yourClassDAO instance] getNumbersString];
//Transform them in an array
NSArray *arraNumbers = [stringNumbers componentsSeparatedByString:@","];

【讨论】:

【参考方案2】:

要将数字数组存储为单个属性,您可以简单地定义属性 键入 “可转换”。然后你可以将数组分配给属性, 例如

NSArray *arrayOfNumbers = …;
object.numbers = arrayOfNumbers;

Core Data 访问器方法将自动翻译 数组到存储在 SQLite 文件中的一些数据块,并将其转换回来 当您阅读该属性时。

一个缺点是您无法访问搜索谓词中的数组元素。如果你 需要的话,你应该定义一个多对多关系。

【讨论】:

以上是关于将 NSNumber* 的 NSArray 存储为 Core Data 中的 NSString的主要内容,如果未能解决你的问题,请参考以下文章

转换对象以写入firebase? (只能存储 NSNumber、NSString、NSDictionary 和 NSArray 类型的对象)

带有 NSNumber 的 NSArray 的 NSPredicate(核心数据)

如何将 NSNumber 转换为 NSString

对包含 NSNumber 变量的 NSobjects 的 NSArray 进行排序

如何使用NSUserDefault存储数据

求助关于 swift 数组,NSArray 和 闭包 的问题