Ios Can';t将关系对象设置为CoreData中的另一个对象
我有两个实体:目标和类别。我将关系“类别”添加到目标实体。我希望用户可以从列表中选择一个类别,然后将该类别添加为目标对象的关系。但我收到错误:Ios Can';t将关系对象设置为CoreData中的另一个对象,ios,objective-c,core-data,Ios,Objective C,Core Data,我有两个实体:目标和类别。我将关系“类别”添加到目标实体。我希望用户可以从列表中选择一个类别,然后将该类别添加为目标对象的关系。但我收到错误:-[\uu NSSingleObjectSetI managedObjectContext]:无法识别的选择器发送到实例0x138a22fa0 我的代码: - (BOOL)save { // Get Category object NSManagedObject *objCategory = [self getCategoryObject
-[\uu NSSingleObjectSetI managedObjectContext]:无法识别的选择器发送到实例0x138a22fa0
我的代码:
- (BOOL)save {
// Get Category object
NSManagedObject *objCategory = [self getCategoryObjectWithID:@"1"];
if (!objCategory) {
NSLog(@"ERROR objCategory fetching!");
return;
}
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Goal"
inManagedObjectContext:[CoreDataWrapper myManagedContext]];
NSManagedObject *goal = [[NSManagedObject alloc] initWithEntity:entity insertIntoManagedObjectContext:[CoreDataWrapper myManagedContext]];
[goal setValue:strID forKey:@"id"];
[goal setValue:[NSSet setWithObject:objCategory] forKey:@"category"]; // here error
return [CoreDataWrapper saveMyContext];
}
- (NSManagedObject *)getCategoryObjectWithID:(NSString *)catID {
// Fetching
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] initWithEntityName:@"Category"];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"%K == %@", @"categoryID", catID];
[fetchRequest setPredicate:predicate];
// Execute Fetch Request
NSError *fetchError = nil;
NSArray *result = [[CoreDataWrapper myManagedContext] executeFetchRequest:fetchRequest error:&fetchError];
if (!fetchError) {
return result[0];
}
return nil;
}
我不熟悉CoreData,也许这是一些愚蠢的问题,但我关注了很多资源,找不到问题所在。如果你的
目标
对象只能有一个类别,那么它是一对一关系,这意味着类别
属性是一个对象,而不是一组对象(甚至不是一组对象)
您应该这样设置您的类别:
[goal setValue:objCategory forKey:@"category"];