ios - coredata 获取数组元素

标签 ios arrays swift core-data

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

我需要设置 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任何类型( StringArrayNSArrayNSMutableArray 它总是返回 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/

相关文章:

ios - 按 UserDefaults 排序保存和检索数组时出现问题

swift - 使用 XCode 进行测试时,MacOS 应用程序本地通知不显示

swift - 核心数据 : ValueTransformer functions are not called

objective-c - 从 UI 中删除图像

javascript - 在 JavaScript 中生成一个不重复的随机数

objective-c - 如何制作类似 Explore Flickr 应用旋转动画的动画

arrays - 为什么我不能将新分配的字节数组分配给类型为 []byte 的变量?

ios - Swift - AWS Cognito-Facebook 登录

ios - Swift中如何保持Dictionary中数据的顺序?

ios - 应用程序启动后出现错误 "dyld_sim` dyld_fatal_error"