0

我正在尝试在 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,它会找到对象。如果我打印对象的 name 属性,我会得到“The Brown Family”。因此,该对象具有正确的 id 和名称,但我的 fetchRequest 失败。我究竟做错了什么?

4

2 回答 2

1

You might need to enclose the value in single quotes...

NSPredicate *pred = [NSPredicate predicateWithFormat:@"(recordId == %@) AND (name like[cd] '%@')", recordId, name];
于 2016-01-06T13:46:28.847 回答
0

Sorry but I realise what the problem is now! The name I was searching for had a trailing space after it. So I was looking for say "Toby " whereas "Toby" was stored in Coredata. Sorry for wasting everyone's time.

于 2016-01-06T20:58:19.483 回答