NSPredicate execureFetchRequest无法正常工作 - 可能是由于字符串中的空格

时间:2016-01-06 12:57:45

标签: ios core-data nspredicate executefetchrequest

我正在尝试在CoreData中搜索与recordId和字符串名称匹配的对象,但它并不总是找到该对象。 例如,我搜索id为1000且名为“The Brown Family”的对象(注意“The”和“Brown”之间的2个空格)。 如果我使用:

NSPredicate *pred = [NSPredicate predicateWithFormat:@"(recordId == %@") AND (name like[cd] %@)", recordId, name];

如果recordId = 1000且name =“The Brown Family”,则获取请求返回nil。 如果我使用:

NSPredicate *pred = [NSPredicate predicateWithFormat:@"(recordId == %@"),   recordId];

使用recordId = 1000,它会找到该对象。如果我打印对象的名称属性,我会得到“The Brown Family”。 所以对象是正确的id和名称,但我的fetchRequest失败了。 我做错了什么?

2 个答案:

答案 0 :(得分:1)

您可能需要将值括在单引号中...

NSPredicate *pred = [NSPredicate predicateWithFormat:@"(recordId == %@) AND (name like[cd] '%@')", recordId, name];

答案 1 :(得分:0)

很抱歉,我知道现在的问题是什么!我正在寻找的名字后面有一个尾随空格。所以我一直在找" Toby"而#34; Toby"存储在Coredata中。 很抱歉浪费了所有人的时间。