У меня есть следующий код на месте:NSPredicate - Не работает, как ожидалось
NSString *mapIDx = @"98";
NSLog(@"map id: %@", mapIDx);
NSFetchRequest *request = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"WayPoint" inManagedObjectContext:managedObjectContext];
[request setEntity:entity];
//NSPredicate *predicate = [NSPredicate predicateWithFormat:@"waypoint_map_id=%@", mapIDx];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"waypoint_map_id==%@", mapIDx];
[request setPredicate:predicate];
NSError *error;
listArray = [[managedObjectContext executeFetchRequest:request error:&error] mutableCopy];
[request release];
int arrayItemQuantity = [listArray count];
NSLog(@"Array Quantity: %d", arrayItemQuantity);
// Loop through the array and display the contents.
int i;
for (i = 0; i < arrayItemQuantity; i++)
{
NSLog (@"Element %i = %@", i, [listArray objectAtIndex: i]);
}
/*
NSInteger *xCoordinate = listArray[1];
NSInteger *yCoordinate = listArray[3];
NSLog(@"xCoordinate: %@", xCoordinate);
NSLog(@"yCoordinate: %@", yCoordinate);
CLLocationCoordinate2D coordinate = {xCoordinate, yCoordinate};
MapPin *pin = [[MapPin alloc]initwithCoordinates:coordinate];
[self.mapView addAnnotation:pin];
[pin release];
*/
[listArray release];
Как вы можете видеть, что я пытаюсь выбрать конкретные объекты из моей базы данных, что-нибудь с waypoint_map_id 98, но NSPredicate не работает, как я и ожидал. Нулевые объекты выбираются.
У вас есть мысли?
thanks, waypoint_map_id - это строка в базе данных. – Stephen
О, тогда вы уверены, что у вас есть объект WayPoint? С атрибутом 'waypoint_map_id' из« 98 »? Вы можете попробовать прокомментировать предикат и сбросить все объекты WapPoint для проверки. – TechZen
Кроме того, код с комментариями выглядит странно. Первый и третий элементы в возвращаемом массиве будут «WayPoint» NSManagedObjects (или подкласс). Поскольку у вас нет дескриптора сортировки, назначенного на выборку, они будут в случайном порядке. Затем вы назначаете свои адреса в качестве указателей на целые числа, а затем пытаетесь использовать эти адреса как двойные в определении координат. Это не сработает. Я думаю, что вы можете что-то смутить о своих объектах. – TechZen