NSPredicate 格式动态使用 属性 名称
NSPredicate format dynamically use property name
我使用这个谓词从 CoreData 中获取对象:
NSPredicate.init(format: "id in %@", ids)
所以,我的 class 有 属性 叫作 "id"。
是否可以使用 属性 的动态名称而不是硬编码 "id"?
问题是,至少对我而言,如果我更改 属性 的名称,我将需要更改所有使用它的谓词。
相反,我想使用
NSPredicate.init(format: "%@ in %@", #keyPath(MyClass.id), ids)
这给了我一个谓词 "id" in <listOfIDs>
,而要让它工作它需要 id in <listOfIDs>
我知道这很奇怪 'problem',但我真的不想在这种情况下使用任何硬编码的属性名称...
是的,这是可能的,你只需要使用 "%K"
而不是 "%@"
。
NSPredicate.init(format: "%K in %@", #keyPath(MyClass.id), ids)
我使用这个谓词从 CoreData 中获取对象:
NSPredicate.init(format: "id in %@", ids)
所以,我的 class 有 属性 叫作 "id"。
是否可以使用 属性 的动态名称而不是硬编码 "id"?
问题是,至少对我而言,如果我更改 属性 的名称,我将需要更改所有使用它的谓词。
相反,我想使用
NSPredicate.init(format: "%@ in %@", #keyPath(MyClass.id), ids)
这给了我一个谓词 "id" in <listOfIDs>
,而要让它工作它需要 id in <listOfIDs>
我知道这很奇怪 'problem',但我真的不想在这种情况下使用任何硬编码的属性名称...
是的,这是可能的,你只需要使用 "%K"
而不是 "%@"
。
NSPredicate.init(format: "%K in %@", #keyPath(MyClass.id), ids)