coredata 获取数组的元素
Posted
技术标签:
【中文标题】coredata 获取数组的元素【英文标题】:coredata get element of the array 【发布时间】:2018-07-22 17:15:37 【问题描述】:我在我的应用程序中使用 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
?
附:我现在非常绝望,因为我已经尝试了所有找到的方法,但仍然无法做到这一点。我尝试使用object(at: 0)
方法和许多其他方法访问数组中的元素。此外,当我尝试将 a
转换为任何类型(String
或 Array
或 NSArray
或 NSMutableArray
时,它总是返回 nil
。
我做错了什么?
【问题讨论】:
【参考方案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<String>
以上是关于coredata 获取数组的元素的主要内容,如果未能解决你的问题,请参考以下文章
CoreData - 如何创建 fetchrequest 以获取随机属性值数组