How to join two strings for NSPredicate, ie firstname and lastname

后端 未结 3 2125
野趣味
野趣味 2021-02-19 09:29

I have a Person Object which has two NSString properties; firstName and lastName. I\'m currently using an NSPredicate like so

3条回答
  •  生来不讨喜
    2021-02-19 10:19

    The solution suggested above will not work with search strings that have more than two words. Here is a more thorough implementation in swift. This solution also allows for adding more fields on a record, if your goal is to implement a full text search across name, email, phone number, etc. In that case just update the NSPredicate to OR newField CONTAINS[cd] %@ and be sure to add the extra $0 in the list of string replacements.

    let searchText = search.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceCharacterSet())
    let words = searchText.componentsSeparatedByCharactersInSet(NSCharacterSet.whitespaceCharacterSet())
    let predicates = words.map { NSPredicate(format: "firstName CONTAINS[cd] %@ OR lastName CONTAINS[cd] %@", $0,$0) }
    
    let request = NSFetchRequest()
    request.predicate = NSCompoundPredicate(type: NSCompoundPredicateType.AndPredicateType, subpredicates: predicates)
    

提交回复
热议问题