我在我的应用程序中使用 CoreData,我有两个实体:Building
和 Phone
它们使用一对多关系连接。
我需要设置 number
来自 Phone
的属性(property)实体到我的textView.text
table view cell
中的字段.
我使用以下代码来实现此目的(出于演示目的对其进行了简化):
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
任何类型( String
或 Array
或 NSArray
或 NSMutableArray
它总是返回 nil
。
我做错了什么?
最佳答案
您必须将 value(forKeyPath
的结果向下转换为实际类型 [String]
。
获取第一个数字的保存方式是
if let a = b.value(forKeyPath: "buildingPhones.number") as? [String],
let firstNumber = a.first {
print(firstNumber)
}
请注意,一对多
关系的类型是(无序的)Set
。不能保证数组的顺序始终相同。
关于ios - coredata 获取数组元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51467490/