"Moja jednostka w CoreData nazywa się myentity
i atrybut o nazwie " myuniqueid
i chcę uruchomić kwerendę SQL w następujący sposób:
Select * from myentity where myuniqueid == 1000
Jak mogę uzyskać moje określone wiersze, w których pasują, tak jak w zapytaniu SQL? tak, że chcę filtrować wszystkie wiersze gdzie myuniqueid
jest 1000
.
Mój kod:
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSManagedObjectContext *context = [self managedObjectContext];
if (context == nil) {}
else {
NSEntityDescription *entity = [NSEntityDescription entityForName:@"myentity" inManagedObjectContext:context];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"myuniqueid == 1000"];
[fetchRequest setPredicate:predicate];
[fetchRequest setEntity:entity];
NSArray *items = [context executeFetchRequest:fetchRequest error:nil];
for (int i=0; i<4; i++) {
NSManagedObject *mo = [items objectAtIndex:i]; // assuming that array is not empty
id value = [mo valueForKey:@"myuniqueid"];
NSLog(@"SENDER: %@",value);
}
}
Im błąd: "Unable to generate SQL for predicate (myuniqueid == 1000) (problem on RHS)"
Odpowiedzi:
1 dla odpowiedzi № 1Wypróbuj ten predykat:
NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"myentity"];
fetchRequest.predicate = [NSPredicate predicateWithFormat:@"myuniqueid == %@", @(1000)];
NSArray *items = [[self managedObjectContext] executeFetchRequest:request error:nil];