我在应用程序中使用CoreData,我有两个实体:Building
和Phone
,它们使用一对多关系连接。
我需要将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
?
第页。S.我现在非常绝望,因为我已经尝试了所有找到的方法,但仍然做不到。我尝试过使用object(at: 0)
方法和许多其他方法访问数组中的元素。此外,当我尝试将a
强制转换为任何类型(String
或Array
、NSArray
或NSMutableArray
(时,它总是返回nil
我做错了什么?
您必须将value(forKeyPath
的结果向下转换为实际类型[String]
。
获取第一个号码的保存方式是
if let a = b.value(forKeyPath: "buildingPhones.number") as? [String],
let firstNumber = a.first {
print(firstNumber)
}
请注意,one-to-many
关系的类型是(无序的(Set
。不能保证数组的顺序总是相同的。