需要
我必须找到 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)
如果你想找到所有以 apple 开头以 macbook 结尾的记录,你可以再做一件事,然后你可以简单地使用 BEGINSWITH
和 ENDSWITH
fetchRequest.predicate = NSPredicate(format: "rec_name BEGINSWITH[cd] %@ AND rec_name ENDSWITH[cd] %@ AND isActive = %@", "apple","macbook", true as NSNumber)
关于ios - 谓词的核心数据提取请求错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43972780/