objectID多对多的关系

时间:2017-05-30 18:03:25

标签: ios core-data nsmanagedobjectid

我的Swift菜鸟编程需要一些帮助......

多对多关系中,我有一个var elevid :NSManagedObjectID? let person = context.object(with: studentId!) nameTextField.text = person.value(forKey: "name") as? String ,我从另一个视图控制器中进行了搜索。

要从中检索数据,我使用了这个:

let isAtSchool = person.value(forKeyPath: "isAtSchool.monday") as! Bool

这很好用,但是当我试图从关系中获取属性时,我就陷入了困境。

我试过了:

?

但是我收到错误告诉我:

  

无法将'__NSSingleObjectSetI'(0x10ac63aa8)类型的值转换为'NSNumber'(0x109e5a4a8)。

如果我之后使用!代替nil,则会返回user_email_lookup uid_0 email: "johnny@dontdothis.com" user_name: "johnny_unsecure" uid_1 email: "fred@exposednodes.com" user_name: "fred_stolendata"

有人知道怎么做吗?

1 个答案:

答案 0 :(得分:0)

当您要求name属性时,您要求的是单个值,这样就没问题了。但是当你使用这个关键路径时,你正在穿越多对多关系。可能有2或10或100万个相关对象,但您需要一个Bool。这应该如何运作?

目前还不清楚在这种情况下你真正想要的是什么。在那些潜在的数百万相关对象中,您如何计算Bool的值? 可能你想要做的事情就是从那些(潜在的)数百万中选出一个相关的对象并从该单个实例中获取Bool。但是据我所知,您可能想要扫描所有这些内容并查看最常见的Bool值。

如何更改代码取决于您真正需要的内容,应该如何确定单个Bool值。无论如何,您需要从(潜在的)数百万个相关对象到单个Bool - 并且您无法通过密钥路径查找来实现这一点。