10

我有一个属性 id 类型为 String 的 coredata 实体

当尝试从关键路径引用该属性时,它会引发错误

let path = #keyPath(User.id) //Ambiguous reference to member 'id'

codegen 设置为类定义。

我试图检查类的生成文件,我发现实体类现在确认Identifiable需要id

我注意到将部署目标设置为低于 iOS 13 将解决问题(但我不想这样做)

Xcode 版本 12.0 测试版 4 (12A8179i)

有没有办法在不禁用代码生成或更改部署目标的情况下解决这个问题?

4

1 回答 1

8

解决此问题的方法是使用所需的关键路径的 Objective c 字符串表示形式。

例如,如果你想为 id 创建一个谓词,那么而不是

let ambiguousPredicate = NSPredicate(format: "%K = %@", #keyPath(User.id), id) 

你可以写

let workingPredicate = NSPredicate(format: "%K = %@", (\User.id)._kvcKeyPathString!, id)
于 2020-08-07T12:20:43.507 回答