Вы должны использовать класс NSPredicate
для выполнения команд SQL. Код:
NSManagedObjectContext *context = self.managedObjectContext; // specify your MOC object
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"users" inManagedObjectContext:context]; // specify your entity (table)
NSPredicate *predicate = [NSPredicate predicatewithFormat:@"id == %d",yourID]; // specify your condition (predicate)
[fetchRequest setEntity:entity];
[fetchRequest setPredicate:predicate];
NSError *error = nil;
NSArray *array = [context executeFetchRequest:fetchRequest error:&error]; // execute
[entity release];
[predicate release];
[fetchRequest release];
if (array == nil) {
// Error: no objects returned
} else {
// Success: do whatever you want
}
Шаг 1: Alloc / init NSFetchRequest
Вам необходимо выделить / инициализировать объект NSFetchRequest, если вы хотите выполнять запросы.
Шаг 2: Выберите сущность
Если вы хотите указать select * from users ...
, вы должны использовать NSEntityDescription
:
NSEntityDescription *entity = [NSEntityDescription entityForName:@"users" inManagedObjectContext:context];
В конце вам нужно «прикрепить» описание вашей сущности к вашему объекту NSFetchRequest через:
[fetchRequest setEntity:entity];
Шаг 3: Состояние
Если вы хотите иметь условие (например, ... where id = 1
), вы должны реализовать NSPredicate
.
NSPredicate *predicate = [NSPredicate predicatewithFormat:@"id == %d",yourID];
yourID
должен быть числом (например, 1
, 2
, 7
или 46
).
И снова:
[fetchRequest setPredicate:predicate];
Шаг 4: Выполним!
NSArray *array = [context executeFetchRequest:fetchRequest error:&error];
Все записи, соответствующие условиям, будут возвращены в виде массива NSManagedObjects.
Шаг 5: Отпустить объекты
[entity release];
[predicate release];
[fetchRequest release];
Шаг 6: Сделай что-нибудь
Если нет объектов, удовлетворяющих условиям, array
объект будет nil
. Вы можете проверить это и устранить ошибку с помощью:
if (array == nil)
Проверьте Руководство по программированию основных данных для получения дополнительной информации. :)