У меня есть список объектов, управляемых CoreData. Я хочу получить конкретный объект из CoreData, используя NSPredicate. ниже код, который я использую. Array arr всегда возвращается с 0 объектами, вероятно, потому что выборка не может найти объект, который соответствует предикату. я точно знаю, что по крайней мере 1 объект в CoreData имеет объявление. uuid, которое соответствует adUdid. я вручную получил весь список объектов и сам искал uuid и нашел его. реклама является участником WebServiceAuthService_mobileAdvertisingVO, а uuid является участником рекламы. Еще более агрегирующим является тот факт, что этот точный код прекрасно работает в другом проекте. Я не могу понять, почему этот код больше не работает в новом проекте.
если это важно, этот код находится в статической библиотеке, которую я создаю.
РЕДАКТИРОВАТЬ: arr всегда пуст, поэтому нет ничего для публикации. также нет ошибок. это просто не работает. uuids - это 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;
}
}
}