为什么这个NSPredicate不起作用?
|
我有一个由CoreData管理的对象列表。我想使用NSPredicate从CoreData中获取特定对象。下面是我正在使用的代码。数组arr总是返回0个对象,大概是因为获取无法找到与谓词匹配的对象。我知道一个事实,即CoreData中至少有一个对象具有与adUdid匹配的advertise.uuid。我已经手动获取了整个对象列表,并自己在其中搜索了uuid并找到了它。广告是WebServiceAuthService_mobileAdvertisementVO的成员,而uuid是广告的成员。更重要的是,这个确切的代码在另一个项目中也可以正常工作。我无所适从,弄清楚了为什么该代码在新项目中不再起作用。
万一重要的是,此代码在我正在制作的静态库中。
编辑:arr总是空的,所以没有要发布的内容。也没有给出错误。它只是不工作。 uuid是NSStrings,类似于\“ 9ca98efe-ef48-47c0-aff5-058224b3093d \”。我觉得问题可能出在代码的其他地方,只是在这里表现出来。
WebServiceAuthService_mobileAdvertisementVO *mobileAd = nil;
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@\"WebServiceAuthService_mobileAdvertisementVO\" inManagedObjectContext:managedObjectContext];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@\"advertisement.uuid == %@\",adUdid];
[fetchRequest setEntity:entity];
[fetchRequest setPredicate:predicate];
NSError *error = nil;
NSArray *arr = [managedObjectContext executeFetchRequest:fetchRequest error:&error];
[fetchRequest release];
if (error)
{
DLog(@\"fetched special ad error: %@\",[error localizedDescription]);
}
if (arr && [arr count] >= 1)
{
DLog(@\"found ad with UUID %@\",adUdid);
for (WebServiceAuthService_mobileAdvertisementVO *obj in arr)
{
NSManagedObjectID *objID = [obj objectID];
if (![objID isTemporaryID])
{
mobileAd = obj;
}
}
}
没有找到相关结果
已邀请:
1 个回复
蔬谢窗港
不用担心引号,predicateWithFormat:会自动在右手边加上单引号。 编辑: 参考:谓词编程指南