Ios 从CoreData中的子项修改父属性值

Ios 从CoreData中的子项修改父属性值,ios,core-data,parent-child,key-value-coding,Ios,Core Data,Parent Child,Key Value Coding,我在两个实体之间有以下亲子关系 在我的场景中,当子属性发生某些更改时,我必须更新父属性 + (void)updateTaskStatus:(Task *)task withTaskStatus:(NSNumber *)taskStatus inManagedObjectContext:(NSManagedObjectContext *)context { [task setValue:taskStatus forKey:@"taskCompletionS

我在两个实体之间有以下亲子关系

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

    + (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"];
产生以下错误

实体任务与键“list.listSyncStatus”的键值编码不兼容。

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

“list.listSyncStatus”
不是一个键,而是一个键路径(有两个键),因此:

[task setValue:[NSNumber numberWithBool:NO] forKeyPath:@"list.listSyncStatus"];
或者,使用属性访问器方法并写入

task.list.listSyncStatus = @NO;
如果您已为实体生成了
NSManagedObject
子类。

“list.listSyncStatus”
不是键,而是键路径(有两个键),因此:

[task setValue:[NSNumber numberWithBool:NO] forKeyPath:@"list.listSyncStatus"];
或者,使用属性访问器方法并写入

task.list.listSyncStatus = @NO;
如果您已为实体生成了
NSManagedObject
子类。

“list.listSyncStatus”
不是键,而是键路径(有两个键),因此:

[task setValue:[NSNumber numberWithBool:NO] forKeyPath:@"list.listSyncStatus"];
或者,使用属性访问器方法并写入

task.list.listSyncStatus = @NO;
如果您已为实体生成了
NSManagedObject
子类。

“list.listSyncStatus”
不是键,而是键路径(有两个键),因此:

[task setValue:[NSNumber numberWithBool:NO] forKeyPath:@"list.listSyncStatus"];
或者,使用属性访问器方法并写入

task.list.listSyncStatus = @NO;

如果您已经为您的实体生成了
NSManagedObject
子类。

@Wain list对象存在。回答完成了任务。@Wain您不需要检查它是否存在,因为Objective-C是
nil
Tolerance。在
nil
上调用setter不会产生错误。@MarcusS.Zarra true确实,我的意思是您可能会得到“意外”结果(有些人认为可以立即设置)。@Wain list对象存在。回答完成了任务。@Wain您不需要检查它是否存在,因为Objective-C是
nil
Tolerance。在
nil
上调用setter不会产生错误。@MarcusS.Zarra true确实,我的意思是您可能会得到“意外”结果(有些人认为可以立即设置)。@Wain list对象存在。回答完成了任务。@Wain您不需要检查它是否存在,因为Objective-C是
nil
Tolerance。在
nil
上调用setter不会产生错误。@MarcusS.Zarra true确实,我的意思是您可能会得到“意外”结果(有些人认为可以立即设置)。@Wain list对象存在。回答完成了任务。@Wain您不需要检查它是否存在,因为Objective-C是
nil
Tolerance。在
nil
上调用setter不会产生错误。@MarcusS.Zarra true的确,我的意思是您可能会得到“意外”结果(有些人认为可以立即设置)。