NSPredicate 过滤数组的一部分
NSPredicate filter part of array
我刚开始编码,我选择了 swift。我有一个 CoreData 数据库,我使用谓词来显示它的一部分。找到一个完整的表达式效果很好。
我该怎么做才能在数据字段 Strasse.name 中搜索字符串的一部分,如“*way”。这是我的代码:
let myFetschRequest = NSFetchRequest(entityName: "Strasse")
var filter1 = "searchword"
var filter2 = "searchword"
let predicate1 = NSPredicate(format: "name = %@", filter1)
let predicate2 = NSPredicate(format: "art = %@", filter2)
var compound = NSCompoundPredicate.andPredicateWithSubpredicates([predicate1,predicate2])
myFetschRequest.predicate = compound
let sortDescriptor1 = NSSortDescriptor(key: "name", ascending: true)
let sortDescriptor2 = NSSortDescriptor(key: "bereich", ascending: true)
myFetschRequest.sortDescriptors = [sortDescriptor1,sortDescriptor2]
daten = context!.executeFetchRequest(myFetschRequest, error: nil) as! [Strasse]
tableView.reloadData()
可能是这样的:
let filter = "way"
let condition = [NSPredicate(format: "Strasse.name contains[cd] %@", filter]
刚刚用谷歌搜索很快。如果有效,稍后再测试。
已测试并正常工作。
试试吧。
var name = "way"
let resultPredicate2 = NSPredicate(format: "Strasse.name BEGINSWITH[cs] %@",name)
这个谓词过滤所有数据,从"way"开始。如果你只想要一个特定的字符串。然后使用下面给出的。
let resultPredicate2 = NSPredicate(format: "Strasse.name LIKE[cs] %@",name)
我刚开始编码,我选择了 swift。我有一个 CoreData 数据库,我使用谓词来显示它的一部分。找到一个完整的表达式效果很好。 我该怎么做才能在数据字段 Strasse.name 中搜索字符串的一部分,如“*way”。这是我的代码:
let myFetschRequest = NSFetchRequest(entityName: "Strasse")
var filter1 = "searchword"
var filter2 = "searchword"
let predicate1 = NSPredicate(format: "name = %@", filter1)
let predicate2 = NSPredicate(format: "art = %@", filter2)
var compound = NSCompoundPredicate.andPredicateWithSubpredicates([predicate1,predicate2])
myFetschRequest.predicate = compound
let sortDescriptor1 = NSSortDescriptor(key: "name", ascending: true)
let sortDescriptor2 = NSSortDescriptor(key: "bereich", ascending: true)
myFetschRequest.sortDescriptors = [sortDescriptor1,sortDescriptor2]
daten = context!.executeFetchRequest(myFetschRequest, error: nil) as! [Strasse]
tableView.reloadData()
可能是这样的:
let filter = "way"
let condition = [NSPredicate(format: "Strasse.name contains[cd] %@", filter]
刚刚用谷歌搜索很快。如果有效,稍后再测试。
已测试并正常工作。
试试吧。
var name = "way"
let resultPredicate2 = NSPredicate(format: "Strasse.name BEGINSWITH[cs] %@",name)
这个谓词过滤所有数据,从"way"开始。如果你只想要一个特定的字符串。然后使用下面给出的。
let resultPredicate2 = NSPredicate(format: "Strasse.name LIKE[cs] %@",name)