【问题标题】:After adding objects via CoreDataGeneratedAccessors to-many relationships's NSSet is empty通过 CoreDataGeneratedAccessors 将对象添加到多关系的 NSSet 后为空
【发布时间】:2011-03-25 13:03:27
【问题描述】:

我有两个核心数据实体:ParentChild。父级与称为childrenChild 具有多对多关系。来自Child.parent 的反比关系。所以父母有CoreDataGeneratedAccessors- (void)addChildrenObject:(Child *)value;- (void)addChildren:(NSSet *)value;

问题:在我使用其中一个访问器添加 Child(s) 并保存 managedObjectContext parent.children 后为空。同时每个添加的Childparent 属性指向ParentNSFetchedResultsController 的正确实例,很好地获取这样的孩子(谓词为parent = %@, <instance of Parent>)。

怎么会这样?只是不知道如何调试这种奇怪的 CoreData 行为。

【问题讨论】:

  • 你能展示你用来将子对象添加到父对象的代码吗?

标签: core-data relationship


【解决方案1】:

解决了。不知何故,该集合的属性由 .m 文件中的 @synthesize 而不是 @dynamic 合成。我知道这是一个非常愚蠢的错字,但我想知道为什么 XCode 甚至没有对此产生警告!静态分析器也没说什么!

【讨论】:

    【解决方案2】:

    当您像这样定义属性时也会发生同样的情况:

    @interface Project : BaseModel {
      Workspace *workspace;
      NSString *name;
    }
    
    @property (nonatomic, retain) Workspace *workspace;
    @property (nonatomic, retain) NSString *name;
    

    正确的界面应该是这样的:

    @interface Project : BaseModel {}
    
    @property (nonatomic, retain) Workspace *workspace;
    @property (nonatomic, retain) NSString *name;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-10
      相关资源
      最近更新 更多