我在两个实体之间有以下父母子女关系
在我的场景中,当子属性发生某些变化时,我必须更新父属性。
+ (void)updateTaskStatus:(Task *)task
withTaskStatus:(NSNumber *)taskStatus
inManagedObjectContext:(NSManagedObjectContext *)context
{
[task setValue:taskStatus forKey:@"taskCompletionStatus"];
[task setValue:[NSNumber numberWithBool:NO] forKey:@"taskSyncStatus"];
[task setValue:[NSNumber numberWithBool:NO] forKey:@"list.listSyncStatus"];
}
但是从上面的方法这一行
[task setValue:[NSNumber numberWithBool:NO] forKey:@"list.listSyncStatus"];
产生以下错误
the entity Task is not key value coding-compliant for the key "list.listSyncStatus".'
所以我的问题为什么会发生这种情况?如果不是这样,那么这样做的正确方法是什么?
答案 0 :(得分:3)
"list.listSyncStatus"
不是密钥,而是密钥路径(带有两个密钥),因此:
[task setValue:[NSNumber numberWithBool:NO] forKeyPath:@"list.listSyncStatus"];
或者,使用属性访问器方法并编写
task.list.listSyncStatus = @NO;
如果您为实体生成了NSManagedObject
个子类。