我正在使用CoreData处理应用。我有一个简单的结构:
名称 姓氏
我需要更新一个条目,所以我这样做:
if (strLastname.lengt > 0) {
predicate = [NSPredicate predicateWithFormat:@"(dbName LIKE[c] %@ AND dbLastname LIKE[c] %@)", strName, strLastname];
else {
predicate = [NSPredicate predicateWithFormat:@"(dbName LIKE[c] %@)", strName];
}
现在的问题是,当我的数据库包含更多具有相同名称的用户且其中一个没有姓氏时,谓词将始终匹配名称类似于strName的第一个条目,因此我应该检查dbLastname是否类似于''但是它失败:
if (strLastname.lengt > 0) {
predicate = [NSPredicate predicateWithFormat:@"(dbName LIKE[c] %@ AND dbLastname LIKE[c] %@)", strName, strLastname];
else {
predicate = [NSPredicate predicateWithFormat:@"(dbName LIKE[c] %@ AND dbLastname LIKE[c] '')", strName];
}
谓词没问题,但fetchedObject为空。
感谢任何帮助。
最高
答案 0 :(得分:0)
而不是LIKE尝试CONTAINS,当我遇到同样的问题时,这解决了我的问题。另外,正确检查所有拼写,无论你在哪个字段名称和变量,谓词都是正确的。
答案 1 :(得分:0)
找到了办法。我检查长度。
[NSPredicate predicateWithFormat:@"(dbName LIKE[c] %@ AND not dbLastname.length > 0)", strName];