NSManagedObject的Setter创建_CDSnapshot_Provence_

时间:2012-10-19 17:07:01

标签: ios core-data nsmanagedobject

我有两个NSManagedObject:

  1. DataEntered
  2. 普罗旺斯
  3. 它们之间存在关联:DataEntered必须有一个普罗旺斯,普罗旺斯可能有一个/多个DataEntered。

    一切运行良好,但在使用仪器和分配时,每次将普罗旺斯设置为DataEntered时,#Living中都会出现一个新的_CDSnapshot_Provence_:

    Provence * provence = [[self fetchedResultsController] objectAtIndexPath:indexPath];
    [self.dataEntered setAddress_provence:provence];
    

    DataEntered中普罗旺斯的setter由CoreData管理,没有自定义。

    保存DataEntered时,保存正确。什么可以导致创建多个生活_CDSnapshot_Provence_?

    谢谢!

    @class Provence;
    
    @interface DataEntered : NSManagedObject
    
    @property (nonatomic, retain) NSString * name;
    @property (nonatomic, strong) Provence *address_provence;
    
    @end
    
    
    @class Provence;
    
    @interface DataEntered : NSManagedObject
    
    @property (nonatomic, retain) NSString * name;
    @property (nonatomic, strong) Provence *address_provence;
    
    @end
    
    
    
    @class DataEntered;
    
    @interface Provence : NSManagedObject
    
    @property (nonatomic, retain) NSString * name;
    @property (nonatomic, retain) NSSet *dataEnteredAddress_Provence;
    
    @end
    
    
    @interface Provence (CoreDataGeneratedAccessors)
    
    - (void)addDataEnteredAddress_ProvenceObject:(DataEntered *)value;
    - (void)removeDataEnteredAddress_ProvenceObject:(DataEntered *)value;
    - (void)addDataEnteredAddress_Provence:(NSSet *)values;
    - (void)removeDataEnteredAddress_Provence:(NSSet *)values;
    
    @end
    
    
    #import "Provence.h"
    #import "DataEntered.h"
    
    
    @implementation Provence
    
    @dynamic name;
    @dynamic dataEnteredAddress_Provence;
    
    @end 
    

1 个答案:

答案 0 :(得分:2)

我看到完全一样的东西,我相信这是可以预期的。

请参阅Apple文档中的冲突检测和乐观锁定部分 https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CoreData/Articles/cdChangeManagement.html

“当Core Data从持久性存储中获取对象时,它会获取其状态的快照。快照是对象的持久属性的字典 - 通常是其所有属性和任何对象的全局ID它有一对一的关系。“

在同一个链接上还有一个部分可用于阅读 - 快照管理

我遇到的问题是在我出错所有托管对象或进行上下文重置后,让Core Data释放内存分配。

我刚刚发布了一篇关于此主题和相关主题的博文: 内存分配的核心数据问题 - http://finalize.com/2013/01/04/core-data-issues-with-memory-allocation/

希望这有帮助。

斯科特