#core-data
#основные данные
Вопрос:
У меня простой вопрос о базовых данных.
Я настроил объект employee и объект EmployeeDetails. Оба имеют отношение, указывающее на другое, чтобы сформировать простое взаимно однозначное отношение. У каждого сотрудника есть один EmployeeDetail.
Я могу сохранять новых сотрудников и извлекать их при необходимости. Мой вопрос в том, как мне сохранить соответствующие данные о сотрудниках одновременно с сохранением сотрудника и как мне получить сведения о соответствующем сотруднике в выборке?
Спасибо за любую помощь, которую вы можете предоставить.
Комментарии:
1. Если у вас всегда есть EmployeeDetail , и это 1: 1, почему это отдельная сущность?
2. Потому что я храню в памяти большой набор данных о сотрудниках, и мне нужно получить доступ к деталям только тогда, когда для просмотра сведений используется строка сотрудника.
Ответ №1:
Используйте триггер, который срабатывает при каждой вставке в relvar сотрудника.
Комментарии:
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);
}
}