Отображение бизнес-объектов с базовыми данными в iOS

Я новичок в iOS. Может ли кто-нибудь рассказать о том, как я могу сопоставить свой BO с Core Data, чтобы я мог повторно использовать сопоставление в моем проекте. Вот мой код

- (void) saveData
{       
    CoredataAppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];

    NSManagedObjectContext *context = [appDelegate managedObjectContext];

    NSManagedObject *newContact;

    newContact = [NSEntityDescription insertNewObjectForEntityForName:@"Person" inManagedObjectContext:context];

    [newContact setValue:firstName.text forKey:@"firstName"];
    [newContact setValue:lastName.text forKey:@"lastName"];
    [newContact setValue:driverLicenceno.text forKey:@"driverLicenceNumber"];
    [newContact setValue:state.text forKey:@"state"];
    [newContact setValue:phoneNO.text forKey:@"phoneNumber"];
    [newContact setValue:injuryStatus.text forKey:@"injuryStatus"];
    [newContact setValue:emailAddress.text forKey:@"emailAddress"];

    NSLog(@"fName%@",firstName.text);
    firstName.text = @"";
    NSLog(@"fName%@",firstName.text);
    lastName.text = @"";
    driverLicenceno.text = @"";
    state.text = @"";
    phoneNO.text = @"";
    injuryStatus.text = @"";
    emailAddress.text = @"";

    NSError *error;
    [context save:&error];
    status.text = @"Person saved";
}

Есть ли другой способ сопоставить мой BO с coredata, кроме этого?

 Tahir Mehmood17 мая 2012 г., 07:24
Моя цель состоит в том, чтобы отобразить мой BO в coredata, чтобы он автоматически заполнил мой personInfoBO путем сопоставления объекта модели, но не может создать модель сопоставления. Вот ссылка, по которой я следуюdeveloper.apple.com/library/mac/#documentation/Cocoa/Conceptual/…
 Lorenzo B17 мая 2012 г., 12:45
Сmapping model Вы имеете в виду модель данных?
 Lorenzo B16 мая 2012 г., 16:26
Что вы имеете в виду для отображения BO в Core Data? У вас уже есть модель данных? Как я вижу из вашего кода, вы используете сущность Person. Итак, какова ваша цель? Благодарю.
 Lorenzo B25 мая 2012 г., 11:56
Это нормально для вас? Приветствия.
 Tahir Mehmood21 мая 2012 г., 07:40
просто скажите мне, как применять sql-запросы, такие как обновление, удаление, поиск второго максимума, объединений, просмотр и т. д. в основных данных?

Ответы на вопрос(2)

Решение Вопроса

Тахир сначала вы должны создать Coredata db, который вы уже создали. Затем выберите таблицу на панели Entity в модели coredata. Щелкните правой кнопкой мыши модель в иерархическом дереве проекта. Выберите новый файл, выберите coredata и NSManagedObjectSubclass, а затем сохраните его. Он создает класс модели для таблицы coredata, которую вы можете использовать в своих методах.enter image description here

Это изображение показывает выбор базы данных и таблицы для щелчка правой кнопкой мыши и выбора NSManagedObjectSubClass

enter image description here

Это изображение показывает выбор первого coredata, чем NSManagedObjectSubClass, и после этого, когда вы нажимаете «Далее», он показывает вашу панораму, чтобы дать имя и сохранить его в своем проекте. Я надеюсь, что это поможет вам, спасибо!

 Tahir Mehmood20 мар. 2013 г., 08:27
Спасибо, эта работа для меня

just tell me how to apply sql queries like update ,delete,find second max,joins,view etc in core data

Поскольку Core Data охватывает много вещей, я могу дать несколько советов.

Прежде всего, работа с базовыми данными означает работу с управляемыми объектами, которые «живут». в своего рода блокнот, который называетсяNSManagedObject, Думайте об этом как о некоем графе контейнера, который содержит объекты, которые извлекаются из файла (например, файла sql) на основе созданной вами модели данных. До тех пор, пока вы не сохраните контекст, изменения хранятся в памяти и не сохраняются физически.

[moc save:&error];

СNSManagedObject Вы можете создавать, обновлять, запрашивать или удалять объекты. И делать другие вещи, конечно.

Если вам нужно вставить новый управляемый объект (который объявлен в вашей модели данных), вы можете использоватьinsertNewObjectForEntityForName:inManagedObjectContext:.

Если вам нужно выполнить запросы, вам нужно посмотреть наNSFetchRequest учебный класс. НастройкаNSFetchRequest эквивалентно утверждению SELECT на языке SQL.

Вот простой пример:

NSFetchRequest *request = [[NSFetchRequest alloc] init];
[request setEntity:[NSEntityDescription entityForName:@"Person" inManagedObjectContext:moc]];

NSError *error = nil;
NSArray *results = [moc executeFetchRequest:request error:&error];

// error handling code

Массивresults содержит все управляемые объекты (люди), содержащиеся в файле sqlite. Если вы хотите получить определенный объект (или несколько объектов), вам нужно использовать предикат с этим запросом. Например:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"firstName == %@", @"John"];
[request setPredicate:predicate]; 

В этом случаеresults содержит объекты (людей), где атрибут равенJohn, Установка предиката равна помещению предложения WHERE в оператор SQL.

Если вы хотите настроить соединения, представления и т. Д., Вам нужно выполнить правильныеNSPredicates среди сущностей (основанных на связях и атрибутах), и пусть Core Data выполнит ряды за вас.

Если вам нужно удалить объект, вам нужно сделать:

[moc deleteObject:managedObjectToDelete];

Если вам нужно обновить управляемый объект, вы должны создать запрос на выборку и получить искомый объект (ы) (например, вы можете предоставить каждому объекту определенный идентификатор и установить предикат с нужным идентификатором). Если запрос извлечения извлекает некоторые объекты, вы можете обновить их.

Это простые советы, которые помогут вам в использовании основных данных. Я предлагаю вам прочитатьРуководство по программированию основных данных, Там вы можете найти много вещей. Если вы хотите, вы можете начать с хорошего учебника по использованию Core Data, посмотрите наwww.raywenderlich.com.

Если вы хотите что-то еще, дайте мне знать.

Надеюсь, поможет.

Ваш ответ на вопрос