我有两个NSManagedObject:


数据输入
普罗旺斯


它们之间存在关系:DataEntered必须具有一个Provence,而Provence可能具有一个/多个DataEntered。

一切运行良好,但是使用工具和分配时,每当我将Provence设置为DataEntered时,新的_CDSnapshot_Provence_就会出现在#Living中:

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


DataEntered中Provence的设置程序由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

最佳答案

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

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

“当核心数据从持久性存储中获取对象时,它将获取其状态的快照。快照是对象的持久性属性的字典,通常是其所有属性以及与其具有一对一关系的任何对象的全局ID关系。”

在同一链接上也有一部分对阅读很有用-快照管理

我遇到的问题是,在我对所有托管对象进行故障处理或进行了上下文重置之后,让Core Data释放其内存分配。

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

希望这可以帮助。

史考特

关于ios - NSManagedObject的二传手创建_CDSnapshot_Provence_,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12979085/

10-12 01:21