0

コードで ManageObjectModel を作成しているときに、2 つのエンティティとその属性を作成しています。しかし、問題は、2 つのエンティティ間に 1 対多の関係を作成する方法です。私のコードは以下です。コードを使用して、2 つの従業員エンティティと組織エンティティの間に 1 対多の関係を作りたいだけです。

- (NSManagedObjectModel *)managedObjectModel
{
    if (__managedObjectModel != nil) {
        return __managedObjectModel;
    }

    __managedObjectModel = [[NSManagedObjectModel alloc] init];

    NSEntityDescription *employeeEntity = [[NSEntityDescription alloc] init];
    [employeeEntity setName:@"Employee"];
    [employeeEntity setManagedObjectClassName:@"Employee"];

    NSEntityDescription *organizationEntity = [[NSEntityDescription alloc] init];
    [organizationEntity setName:@"Organization"];
    [organizationEntity setManagedObjectClassName:@"Organization"];
    [__managedObjectModel setEntities:[NSArray arrayWithObjects:employeeEntity, organizationEntity, nil]];

    NSAttributeDescription *nameAttribute = [[NSAttributeDescription alloc] init];    
    [nameAttribute setName:@"name"];
    [nameAttribute setAttributeType:NSDateAttributeType];
    [nameAttribute setOptional:NO];    

    NSAttributeDescription *idAttribute = [[NSAttributeDescription alloc] init];    
    [idAttribute setName:@"id"];
    [idAttribute setAttributeType:NSInteger32AttributeType];
    [idAttribute setOptional:NO];

    NSArray *properties = [NSArray arrayWithObjects: nameAttribute, idAttribute, nil];
    [employeeEntity setProperties:properties];

    NSAttributeDescription *organizationNameAttribute = [[NSAttributeDescription alloc] init];
    [organizationNameAttribute setName:@"Name"];
    [organizationNameAttribute setAttributeType:NSStringAttributeType];
    [organizationNameAttribute setOptional:NO];        

    properties = [NSArray arrayWithObjects:organizationNameAttribute, nil];
    [organizationEntity setProperties:properties];

    return __managedObjectModel;
}
4

2 に答える 2

1

本当にコードで実行したい場合は、 を作成しNSRelationshipDescriptionてソース オブジェクトのプロパティに追加する必要があります。

これがドキュメントです。

setMaxCount:オブジェクトを作成し、割り当てる前に呼び出します。isToManyメソッドのドキュメントを見ると、次のように書かれていることがわかります。

YES if the receiver represents a to-many relationship (its maxCount is greater than 1) otherwise NO.

于 2012-07-16T19:12:37.020 に答える