从核心数据 Swift 4 中检索数组(可转换)
Posted
技术标签:
【中文标题】从核心数据 Swift 4 中检索数组(可转换)【英文标题】:Retrieve array (Transformable) from core data Swift 4 【发布时间】:2018-01-30 19:31:15 【问题描述】:我有一个名为“Item”的实体,其属性名为“colorArray”,类型为“Transformable”。
colorArray 可以是,例如:
[["Red", "Blue", "Green"], ["Red"], ["Blue", "Green"], ["Green"], ["Blue"], ["Blue", "Green", "Red"]]
然后我使用以下命令将 colorArray 保存到核心数据:
newEntry.colorArray = colorArray as NSObject
我想从核心数据中检索 colorArray(与保存它的数组格式相同),最好的方法是什么?
【问题讨论】:
它应该和进去的一样。你尝试了什么,出了什么问题? 当我尝试使用以下命令检索 colorArray(数组数组)时:array2 = entry.colorArray as! [NSArray] 我收到消息:“线程 1:致命错误:NSArray 元素无法匹配 Swift 数组元素类型” 【参考方案1】:我不确定您为什么要使用 as NSObject
或 as! [NSArray]
,因为对于您提供的示例来说,两者都没有必要或有用。
使用colorArray
属性配置如下:
可以将问题中的数组分配给属性
myObject.colorArray = [["Red", "Blue", "Green"], ["Red"], ["Blue", "Green"], ["Green"], ["Blue"], ["Blue", "Green", "Red"]]
同样可以使用
检索值if let colorArray = myObject.colorArray
print("Color array: \(colorArray)")
colorArray.forEach (entry) in
print("Array entry: \(entry)")
该值保留在 Core Data 中,因此如果您终止应用并重新启动它,数据仍然存在。
使用这些类型转换可能会使这变得过于复杂,并因此导致错误。
【讨论】:
以上是关于从核心数据 Swift 4 中检索数组(可转换)的主要内容,如果未能解决你的问题,请参考以下文章
如何快速将核心数据托管对象数组转换为“可识别”列表? (Xcode 11,测试版 5)