nspredicate с coreata fetchrequest - PullRequest
       0

nspredicate с coreata fetchrequest

0 голосов
/ 09 сентября 2011

Я работаю с приложением, использующим 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 пуст.

Любая помощь приветствуется.

Макс

Ответы [ 2 ]

0 голосов
/ 01 декабря 2011

нашел способ.Я проверяю длину.

[NSPredicate predicateWithFormat:@"(dbName LIKE[c] %@ AND not dbLastname.length > 0)", strName];
0 голосов
/ 09 сентября 2011

Вместо того, чтобы LIKE попробовать CONTAINS, это исправило проблему для меня, когда я столкнулся с той же проблемой.Кроме того, проверьте правильность написания всех слов, предикат верен, независимо от того, какие имена полей и переменных вы там указали.

...