我的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"
。
有人知道怎么做吗?
答案 0 :(得分:0)
当您要求name
属性时,您要求的是单个值,这样就没问题了。但是当你使用这个关键路径时,你正在穿越多对多关系。可能有2或10或100万个相关对象,但您需要一个Bool
。这应该如何运作?
目前还不清楚在这种情况下你真正想要的是什么。在那些潜在的数百万相关对象中,您如何计算Bool
的值? 可能你想要做的事情就是从那些(潜在的)数百万中选出一个相关的对象并从该单个实例中获取Bool
。但是据我所知,您可能想要扫描所有这些内容并查看最常见的Bool
值。
如何更改代码取决于您真正需要的内容,应该如何确定单个Bool
值。无论如何,您需要从(潜在的)数百万个相关对象到单个Bool
- 并且您无法通过密钥路径查找来实现这一点。