将 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(核心数据)