coredata 获取数组的元素

Posted

技术标签:

【中文标题】coredata 获取数组的元素【英文标题】:coredata get element of the array 【发布时间】: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

我做错了什么?

【问题讨论】:

【参考方案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;

以上是关于coredata 获取数组的元素的主要内容,如果未能解决你的问题,请参考以下文章

Swift:将 CoreData 获取为数组

CoreData - 如何创建 fetchrequest 以获取随机属性值数组

CoreData 获取问题:获取具有特定日期数组的实体

CoreData Predicate 获取包含数组中任何单词的每个句子

CoreData:使用 IN 基于谓词/数组进行排序

如何从 CoreData 获取完整的对象(不是故障)?