从核心数据 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 NSObjectas! [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)

从核心数据中检索 Swift 中的坐标时遇到问题

在 Swift 中的自定义单元格中存储/检索核心数据

Swift 中的 iOS 私有/公共数据管理和存储

需要帮助在 Swift 3 中声明用于 plist 信息检索的数组 [重复]

Swift 同时将对象转换为类型和协议