Помогите мне получить результат на основе условия - PullRequest
0 голосов
/ 01 июля 2011

Я создал класс Users на основе NSManagedObject со следующими атрибутами (идентификатор, имя, возраст и т. Д.).

Я использую базовую модель данных, но не знаю, как это сделать ...

Теперь я хотел бы знать, как я могу получить информацию о пользователе на основе идентификатора пользователя.

пример: select * from users where id = 1

пожалуйста, помогите мне.

1 Ответ

1 голос
/ 01 июля 2011

Вы должны использовать класс 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)

Проверьте Руководство по программированию основных данных для получения дополнительной информации. :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...