2012-08-27 60 views
0

我有兩張表在我的coredata模型(有更多但保持簡單的例子)僱員和部門。一個員工屬於一個部門,一個部門包含很多員工。這裏是表定義:xcode iOS CoreData簡單的關係數據檢索

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

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

我只是想知道什麼是最乾淨的方式來檢索所有僱員和他們的departmentName?

感謝

回答

1

你似乎是在設計你的模式,如果它是一個數據庫。請不要這樣做。 CoreData的工作原理並不是必要的也是不對的。你應該擺脫你的ID字段。簡單地聲明在模型中的適當的關係,然後將所有你必須做的就是對員工的部門是:

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數據庫與關係巧妙地序列化?我可以很容易地看到如何使用外鍵序列化我當前的coredata數據庫到xml/JSON。 – Matt

+0

此外,這實際上只是一個.net應用程序的轉換。因此,實施新的關係設置更有益於工作。 – Matt

+0

在這種情況下,您可能需要考慮CoreData是否適合您。將SQlite與FMDB等包裝一起使用可能更合適。 – sosborn