在CoreData中修改Child中的父属性值

时间:2014-02-01 12:32:04

标签: ios core-data parent-child key-value-coding

我在两个实体之间有以下父母子女关系

enter image description here

在我的场景中,当子属性发生某些变化时,我必须更新父属性。

    + (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".'

所以我的问题为什么会发生这种情况?如果不是这样,那么这样做的正确方法是什么?

1 个答案:

答案 0 :(得分:3)

"list.listSyncStatus"不是密钥,而是密钥路径(带有两个密钥),因此:

[task setValue:[NSNumber numberWithBool:NO] forKeyPath:@"list.listSyncStatus"];

或者,使用属性访问器方法并编写

task.list.listSyncStatus = @NO;

如果您为实体生成了NSManagedObject个子类。

相关问题