NSManagedObject无法识别的选择器发送到实例
我有一个核心数据模型如下,其中儿童是一个多人关系。
。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′
如果我将NSOrderedSet
更改为NSSet
,编译器会抱怨它需要一个NSOrderedSet
。
如何将集合分配给NSManagedObject
?
问题不在于NSOrderedSet
,它是你放在集合中的NSString
实例。 这些需要替换为在关系目的地的数据模型中配置的实体的实例。 你不能用错误的对象填充关系。