获取托管对象的多对多关系属性作为托管对象的数组(不是NSOrderedSet)

时间:2018-01-09 16:05:20

标签: xcode core-data swift4

我在核心数据中有一个Collection和一个Member托管对象。 Collection具有多对多关系members,可以包含Member个对象。 Member个对象应与单个Collection唯一关联。

我希望能够将此关系中的对象用作管理对象,以用于填充我的表视图控制器,如下所示:

let members : [Member] = someCollection.members

但是,members属性似乎是NSOrderedSet?对象,而不是Member的数组。

在这种程度上,我尝试了以下内容(在互联网上找到,因为我对Swift来说很新),我也试图了解关系字段可能是nil的情况。它对我不起作用,我不明白为什么。

let members = someCollection.members?.array as! [Member]

if members != nil {
//Do something with the array

else {
//handle the case that there is no entry in the relationship field
}

我收到以下错误:

Thread 1: Fatal error: Unexpectedly found nil while unwrapping an Optional value

请帮助我理解我做错了什么,如果可能的话,提供一个解决方案。

1 个答案:

答案 0 :(得分:2)

由于array返回非可选项,因此必须使用可选的绑定members。如果检查成功,您可以安全地强制打开阵列。代码还会检查数组是否为空。

if let members = someCollection.members, members.count > 0 {
   let memberArray = members.array as! [Member]
   //Do something with the array
else {
   //handle the case that there is no entry in the relationship field
}