>Need
我必须找到rec_name记录是"Apple 256GB Macbook"&isActive == true。
提取请求
fetchRequest.predicate = NSPredicate(format: "rec_name LIKE[cd] *%@* AND rec_name LIKE[cd] *%@* AND isActive = %@","apple","macbook",true)
错误
Unable to parse the format string "rec_name LIKE[cd] *%@* AND rec_name LIKE[cd] *%@* AND isActive = %@"
谢谢
问题是因为这里*%@*
*
之间的%@
没有被字符串参数替换,所以NSPredicate
无法使您的查询LIKE *apple*
和LIKE *macbook*
您需要做的是制作一个带有通配符的搜索字符串,并且 Like 只需使用 %@
,也如@Vadian建议使用数字而不是Bool
。
let searchkeyword1 = "apple"
let searchkeyword2 = "macbook"
//Make search string wildcards charaters
let searchString1 = "*(searchkeyword1)*"
let searchString2 = "*(searchkeyword2)*"
fetchRequest.predicate = NSPredicate(format: "rec_name LIKE[cd] %@ AND rec_name LIKE[cd] %@ AND isActive = %@", searchString1,searchString2, true as NSNumber)
这里的击球选项是您可以使用CONTAINS
,而无需使用通配符。
fetchRequest.predicate = NSPredicate(format: "rec_name CONTAINS[cd] %@ AND rec_name CONTAINS[cd] %@ AND isActive = %@", "apple","macbook", true as NSNumber)
如果您想查找所有记录,您可以再做一件事,从苹果开始,以Macbook结束,然后您只需使用BEGINSWITH
和ENDSWITH
fetchRequest.predicate = NSPredicate(format: "rec_name BEGINSWITH[cd] %@ AND rec_name ENDSWITH[cd] %@ AND isActive = %@", "apple","macbook", true as NSNumber)
试试这个
fetchRequest.predicate = NSPredicate(format: "rec_name LIKE[cd] %@ AND rec_name LIKE[cd] %@ AND isActive = %@","apple","macbook",NSNumber(booleanLiteral: true))
您需要设置如下所示的谓词查询:
fetchRequest.predicate = NSPredicate(format: "rec_name == %@ AND isActive == %@" , "Apple 256GB Macbook", NSNumber(booleanLiteral: true))
我认为我们不需要使用 喜欢 如果您正在寻找完美的匹配。
试试这个
NSPredicate(format: "rec_name == %@ AND rec_name == %@ AND isActive = %d","apple","macbook",true)