gpt4 book ai didi

ios - 如何为一对多关系正确配置 Core Data 数据模型和 NSManagedObject?

转载 作者:塔克拉玛干 更新时间:2023-11-02 10:13:15 28 4
gpt4 key购买 nike

如何为一对多关系正确配置 CoreData 数据模型和 NSManagedObjects?我觉得我错误地配置了 xcdatamodeld 文件,但我找不到问题所在。我生成了一个新的单 View 项目,并选择了 CoreData。下面的代码很简单,我可以解释这个问题。

Parent *parent = [NSEntityDescription insertNewObjectForEntityForName:@"Parent"      inManagedObjectContext:[self managedObjectContext]];

Child *child = [NSEntityDescription insertNewObjectForEntityForName:@"Child" inManagedObjectContext:[self managedObjectContext]];

child.parent = parent;

当我打电话

[parent.children count];

由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“-[子计数]:无法识别的选择器发送到实例 0x7450370”

当我打电话

NSMutableSet *children = [parent mutableSetValueForKey:@"children"];

“实体‘Parent’的‘NSManagedObjects’不支持属性‘children’的-mutableSetValueForKey”

此外,似乎没有生成任何生成的添加/删除方法来修改子集合,例如

- (void)addChildObject:(Child *)value;
- (void)removeChildObject:(Child *)value;

xc数据模型

实体

  • child
    关系: parent
    目的地: parent
    逆: child

  • parent
    关系: child
    目的地: child
    逆:父级

  • 配置(默认)
    实体: child
    类(class): child

    实体:父
    类(class):家长

父类.h

@interface Parent : NSManagedObject
@property (nonatomic, retain) NSSet *children;
@end

父类.m

@implementation Parent
@dynamic children;
@end

child .h

@interface Child : NSManagedObject
@property (nonatomic, retain) NSManagedObject *parent;
@end

child .m

@implementation Child
@dynamic parent;
@end

最佳答案

您应该在 Xcode 中使用“编辑器 -> 创建 NSManagedObject 子类...”来创建托管对象子类文件。这确保您拥有正确的访问器函数。另一个优点是 Xcode 然后知道访问器函数并自动完成。

还要确保 children 关系在核心数据检查器中定义为“对多关系”。

关于ios - 如何为一对多关系正确配置 Core Data 数据模型和 NSManagedObject?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12987403/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com