Fre*_*ust 2 core-data nspredicate nsfetchedresultscontroller swift
我正在尝试为获取的结果控制器创建NSPredicate,控制器应该只观察具有关系的对象(其中它不是nil)以及关系的计数大于0的位置.
我已经看到如何使用字符串作为谓词的参数:
[NSPredicate predicateWithFormat:@"excludedOccurrences.@count == 0"];
Run Code Online (Sandbox Code Playgroud)
来自:https://stackoverflow.com/a/1195519/4096655
但我试图摆脱文字字符串,所以我想使用一个关键路径.
例:
import UIKit
import CoreData
class Animal: NSManagedObject {
@NSManaged var name: String
@NSManaged var friends: NSSet?
}
let keyPath = #keyPath(Animal.friends.count)
Run Code Online (Sandbox Code Playgroud)
导致错误:对成员'count'的模糊引用
#keyPath不了解@count运营商.但是您可以将它用于"Animal.friends"键路径并附加到@count
谓词格式字符串中:
NSPredicate(format: "%K.@count = 0", #keyPath(Animal.friends))
Run Code Online (Sandbox Code Playgroud)