1

我有一个如下的核心数据模型,其中孩子是一对多的关系。

。H

@implementation MyEntity

@dynamic name;
@dynamic children;

@end

.m

@interface MyEntity : NSManagedObject

@property (nonatomic) NSString *name;
@property (nonatomic) NSOrderedSet *children;

@end

然后我尝试使用以下方法设置它:

        MYAppDelegate *delegate = (MYAppDelegate *)[UIApplication sharedApplication].delegate;
        NSManagedObjectContext *managedObjectContext = [delegate managedObjectContext];
        NSEntityDescription *categoryEntity = [NSEntityDescription entityForName:@"MyEntity" inManagedObjectContext:managedObjectContext];
        NSManagedObject *newCategory = [[NSManagedObject alloc] initWithEntity:categoryEntity insertIntoManagedObjectContext:managedObjectContext];
        [newCategory setValue:key forKey:@"name"];
        NSOrderedSet *testSet = [[NSOrderedSet alloc] initWithArray:@[@"This", @"is", @"a", @"test"]];
        [newCategory setValue:testSet forKey:@"children"];
    }
}

然而在最后一行,我得到了这个错误:

NSCFConstantString managedObjectContext]:无法识别的选择器发送到实例 0xe8fa0'

如果我更改NSOrderedSetNSSet编译器抱怨它需要一个NSOrderedSet.

如何将集合分配给NSManagedObject

4

1 回答 1

4

问题不在于,而是您放入集合中NSOrderedSet的实例。NSString这些需要替换为在关系目的地的数据模型中配置的实体的实例。你不能用错误的对象填充关系。

于 2013-08-06T07:08:49.733 回答