Gre*_*reg 6 core-data relationship nspredicate ios swift
我将如何过滤(构建NSPredicate)以获取以下内容.
那么我的困惑/观察是:
偏好是SWIFT(但是如果有人在Objective-C中知道也可能对我有帮助).所以我想再做的是:
谓词就是你所期望的.
NSPredicate(format: "name = %@ && school = %@", "Tom", school)
Run Code Online (Sandbox Code Playgroud)
但是,您可以通过在另一个方向上使用关系并过滤来找到没有谓词的人.
let tom = school.persons.filter { $0.name == "Tom" }.first
Run Code Online (Sandbox Code Playgroud)
(你可能需要投你NSSet的Set<Person>).
假设以下模型:
..并且您想使用NSPredicate.. 您可以尝试以下操作:
func searchSchool(school: School, firstName: String) -> [Person] {
let request = NSFetchRequest(entityName: "Person")
let predicate = NSPredicate(format: "school == %@ && firstName == %@", school, firstName)
request.predicate = predicate
// we will perform the request on the context associated with the School NSManagedObject
guard let context = school.managedObjectContext else {
print("provided School managed object is not associated with a managed object context")
return []
}
do {
return try context.executeFetchRequest(request) as? [Person] ?? []
} catch {
return []
}
}
Run Code Online (Sandbox Code Playgroud)
但是,不要忘记其他选项(例如遍历关系并filter按照@Mundi 的建议使用)
| 归档时间: |
|
| 查看次数: |
7034 次 |
| 最近记录: |