我有两个NSManagedObject:
它们之间存在关联: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
答案 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/
希望这有帮助。
斯科特