我有以下核心数据模型:
现在我想获取CDOnlineContact和CDOfflineContact类型的所有对象。所以我有以下fetchedController:
let fetchRequest = NSFetchRequest(entityName: "CDContact")
fetchRequest.predicate = NSPredicate(format: "??? %@", CDOnlineContact, CDOfflineContact) // <-- Here find only the object of class CDOnlineContact and CDOfflineContact
fetchRequest.sortDescriptors = [NSSortDescriptor(key: "fullname", ascending: true)]
let controller = NSFetchedResultsController(fetchRequest: fetchRequest,
managedObjectContext: self.context.managedObjectContext!,
sectionNameKeyPath: "firstLetter",
cacheName: nil)
controller.performFetch(nil)
我在objective-c中找到了一些解决方案......
NSPredicate* predicate = [NSPredicate predicateWithFormat:@"self isKindOfClass: %@", [NSNumber class]];
,但不幸的是我不能像这样快速检查班级。 仅限查询:
mySecretObject is CDOnlineContact
在NSPredicate中我无法做到这一点。所以我不知道只找到具有指定类的对象。
答案 0 :(得分:2)
您可以NSPredicate
使用block
,如下所示:
let predicate = NSPredicate { (evaluatedObject, _) in
return evaluatedObject is NSNumber
// or
// return evaluatedObject.isKindOfClass(NSNumber)
}
或
let predicate = NSPredicate(format: "SELF isKindOfClass:%@", argumentArray: [NSNumber.self])