Основные данные простая взаимно однозначная связь

#core-data

#основные данные

Вопрос:

У меня простой вопрос о базовых данных.

Я настроил объект employee и объект EmployeeDetails. Оба имеют отношение, указывающее на другое, чтобы сформировать простое взаимно однозначное отношение. У каждого сотрудника есть один EmployeeDetail.

Я могу сохранять новых сотрудников и извлекать их при необходимости. Мой вопрос в том, как мне сохранить соответствующие данные о сотрудниках одновременно с сохранением сотрудника и как мне получить сведения о соответствующем сотруднике в выборке?

Спасибо за любую помощь, которую вы можете предоставить.

Комментарии:

1. Если у вас всегда есть EmployeeDetail , и это 1: 1, почему это отдельная сущность?

2. Потому что я храню в памяти большой набор данных о сотрудниках, и мне нужно получить доступ к деталям только тогда, когда для просмотра сведений используется строка сотрудника.

Ответ №1:

Используйте триггер, который срабатывает при каждой вставке в relvar сотрудника.

http://en.wikipedia.org/wiki/Database_trigger

Комментарии:

1. Триггер — это концепция базы данных, насколько я знаю, ее не существует в IOS core-data.

Ответ №2:

Я решил свою проблему, повторно создав класс для сущностей, основные данные добавят динамическую переменную, представляющую связь. Когда я сохраняю сущности, я создаю объект Employee и EmployeeDetails и указываю поле сведений о сотруднике (динамически управляемое core data) на мой объект EmployeeDetails.

 - (void)addEmployee :(NSDictionary *)_employee {    

    // Create a new instance of the Employee entity.
    Employee *employee = (Employee *)[NSEntityDescription insertNewObjectForEntityForName:@"Employee" inManagedObjectContext:managedObjectContext];
    EmployeeDetails *employeeDetails = (EmployeeDetails *)[NSEntityDescription insertNewObjectForEntityForName:@"EmployeeDetails" inManagedObjectContext:managedObjectContext];

    // Add the new employee
    employee.firstName = [_employee objectForKey:@"first_name"];;
    employee.lastName = [_employee objectForKey:@"last_name"];;
/* --> */   employee.details = employeeDetails;  // Associate with details object

    // Add details
    employeeDetails.address    = [self getValue:[e objectForKey:@"street_address"]];   
    employeeDetails.cellPh     = [self getValue:[e objectForKey:@"cell"]];

    // Save the data
    NSError *error;
    if (![managedObjectContext save:amp;error]) {
        NSLog(@"core date save error: %@", error);
    }   
}