【发布时间】:2020-06-09 21:23:28
【问题描述】:
我有 Car 和 Style 具有多对多关系的模型,我可以选择按它们的样式过滤汽车。所以我使用这样的谓词:
var subpredicates: [NSPredicate] = []
let ids: Set<NSManagedObjectID> = // Get ids of Styles
for id in ids {
subpredicates.append(NSPredicate(format: "ANY styles == %@", id))
}
let predicate = NSCompoundPredicate(orPredicateWithSubpredicates: subpredicates)
然后用它来获取计数:
let fetchRequest = NSFetchRequest<Car>(entityName: "Car")
fetchRequest.predicate = predicate
let count = (try? context.count(for: fetchRequest)) ?? 0
当样式数超过 11 时会出现问题。过滤 12 个样式需要 1 秒,过滤 13 个样式需要 3 秒,过滤 14 个样式需要 9 秒,过滤 15 个样式需要 25 秒。
【问题讨论】: