【问题标题】:coredata get element of the arraycoredata 获取数组的元素
【发布时间】:2018-07-22 17:15:37
【问题描述】:

我在我的应用程序中使用 CoreData,我有两个实体:BuildingPhone,它们使用一对多关系连接。

我需要将Phone 实体中的number 属性设置为table view cell 中的textView.text 字段。 我使用以下代码来实现这一点(为了演示目的,它被简化了):

let a = b.value(forKeyPath: "buildingPhones.number")

我们可以从下面的输出中看到 a 变量现在是两个电话号码的值: Printing description of a: ▿ Optional<Any> ▿ some : 2 elements - 0 : +7 7162 40 15 69 - 1 : +7 7162 25 75 39

如何访问此数组中的第一个数字 - +7 7162 40 15 69

附:我现在非常绝望,因为我已经尝试了所有找到的方法,但仍然无法做到这一点。我尝试使用object(at: 0) 方法和许多其他方法访问数组中的元素。此外,当我尝试将 a 转换为任何类型(StringArrayNSArrayNSMutableArray 时,它总是返回 nil

我做错了什么?

【问题讨论】:

    标签: ios arrays swift core-data


    【解决方案1】:

    您必须将value(forKeyPath 的结果向下转换为实际类型[String]

    获取第一个数字的保存方式是

    if let a = b.value(forKeyPath: "buildingPhones.number") as? [String],
       let firstNumber = a.first {
       print(firstNumber)
    }
    

    注意one-to-many 关系的类型是(无序的)Set。不保证数组的顺序总是一样的。

    【讨论】:

    • 让 c = b.value(forKeyPath: "buildingPhones.number") 作为? [String] 仍然将 nil 分配给 a 变量。
    • 也许关键路径也返回一个集合。请尝试as? Set&lt;String&gt;
    猜你喜欢
    • 1970-01-01
    • 2014-03-04
    • 2014-12-18
    • 2014-12-19
    • 2011-09-03
    • 2012-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多