2012-08-27 4 views
0

У меня есть две таблицы в моей модели coredata (имеют больше, чем просто пример) сотрудников и отделов. Сотрудник находится в отделе, а отдел содержит много сотрудников. Вот определение таблицы:xcode iOS CoreData простой поиск реляционных данных

Employee 
================ 
employeeID int32 
firstName string 
lastName string 
departmentID int32 

Department 
================ 
departmentID int32 
departmentName string 

Им просто интересно, что это самый чистый способ получения всех сотрудников и их departmentName?

Благодаря

ответ

1

Вы, кажется, проектировании схемы, как если бы это была база данных. Пожалуйста, не делайте этого. Нет необходимости и противоречить тому, как работает CoreData. Вы должны избавиться от своих полей идентификатора. Просто объявите соответствующие отношения в модели, а затем все, что вам нужно сделать, чтобы получить отдел для сотрудника будет:

myEmployee.departmentName 

Получение всех сотрудников будет просто сделать так:

NSManagedObjectContext *moc = [self managedObjectContext]; 
NSEntityDescription *entityDescription = [NSEntityDescription 
    entityForName:@"Employee" inManagedObjectContext:moc]; 
NSFetchRequest *request = [[[NSFetchRequest alloc] init] autorelease]; 
[request setEntity:entityDescription]; 

NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] 
    initWithKey:@"firstName" ascending:YES]; 
[request setSortDescriptors:[NSArray arrayWithObject:sortDescriptor]]; 
[sortDescriptor release]; 

NSError *error = nil; 
NSArray *array = [moc executeFetchRequest:request error:&error]; 
if (array == nil) 
{ 
    // Deal with error... 
} 

Это было взято из документов. Если вы используете ARC, измените код соответствующим образом.

+0

Как насчет того, нужно ли мне копировать мои кордаты в «облако», а не повторять его? Как вы сериализуете базу данных coredata с отношениями в такте? Я могу легко понять, как сериализовать текущую базу данных coredata в xml/JSON с помощью внешних ключей. – Matt

+0

Также это просто конверт из приложения .net. Таким образом, внедрение новой реляционной установки - большая работа. – Matt

+0

В этом случае вам может потребоваться рассмотреть, подходит ли вам CoreData. Использование SQlite с оболочкой, такой как FMDB, может быть более уместным. – sosborn

Смежные вопросы