0

私のコアデータ モデルには、従業員と部門の 2 つのテーブルがあります (より多くのテーブルがありますが、例を単純にします)。従業員は部門に属しており、部門には多くの従業員が含まれています。テーブルの定義は次のとおりです。

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

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

すべての従業員とその部門名を取得する最もクリーンな方法は何ですか?

ありがとう

4

1 に答える 1

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 を使用している場合は、それに応じてコードを変更してください。

于 2012-08-27T04:28:22.743 に答える