Macos 核心数据交换错误保存时访问失败?

Macos 核心数据交换错误保存时访问失败?,macos,cocoa,core-data,frameworks,mac-frameworks,Macos,Cocoa,Core Data,Frameworks,Mac Frameworks,我的核心数据模型无法保存。我可以在其中插入一种对象(如下图所示),这样保存就可以了。我可以添加这种对象的多个副本,保存也可以。当我插入不同的对象时,任何一个都会失败,通常是这样: #2 0x00007fff86c342c8 in -[NSManagedObjectContext(_NSInternalAdditions) _changeIDsForManagedObjects:toIDs:] () 其他对象并不复杂:只是字符串和数值。它们的值在节省时间时设置。我已将程序简化为仅初始化NSPe

我的核心数据模型无法保存。我可以在其中插入一种对象(如下图所示),这样保存就可以了。我可以添加这种对象的多个副本,保存也可以。当我插入不同的对象时,任何一个都会失败,通常是这样:

#2  0x00007fff86c342c8 in -[NSManagedObjectContext(_NSInternalAdditions) _changeIDsForManagedObjects:toIDs:] ()
其他对象并不复杂:只是字符串和数值。它们的值在节省时间时设置。我已将程序简化为仅初始化NSPersistentDocument:以下是在我的NSPersistentDocument子类中的
initWithType:error:
中调用的相关代码:

...

// Disable undo registration before inserting default objects
[[[self managedObjectContext] undoManager] disableUndoRegistration];

// Insert the root graph
self.root = [NSEntityDescription insertNewObjectForEntityForName:@"Graph" inManagedObjectContext:[self managedObjectContext]];
self.root.createdDate = [NSDate date];
self.root.lastModifiedDate = [NSDate date];
self.root.name = @"Untitled Model";
self.root.colour = [NSColor colorWithDeviceRed:0.6 green:0.6 blue:0.6 alpha:1.0];

// Insert default drawing parameters
// fails when including this line
self.drawing = [NSEntityDescription insertNewObjectForEntityForName:@"Drawing" inManagedObjectContext:[self managedObjectContext]];

[[self managedObjectContext] processPendingChanges];
[[[self managedObjectContext] undoManager] enableUndoRegistration];

...
跑步时,我会得到:

2011-07-23 07:46:58.012 Z2[15774:a0f] Managed Object Context: <NSManagedObjectContext: 0x2000c65e0>
2011-07-23 07:46:58.013 Z2[15774:a0f] Persistent Store Coordinator: <NSPersistentStoreCoordinator: 0x200063700>
2011-07-23 07:46:58.013 Z2[15774:a0f] Entity: Graph
...<full Entity list>
2011-07-23 07:46:58.016 Z2[15774:a0f] Entity: Drawing
2011-07-23 07:46:58.018 Z2[15774:a0f] Object: <Graph: 0x20004e220> (entity: Graph; id: 0x20003e400 <x-coredata:///Graph/t527187E0-DC67-4A9E-BA88-67A4CD3445222> ; data: {
colour = "(...not nil..)";
createdDate = "2011-07-22 21:46:54 +0000";
errorString = nil;
firstDate = nil;
lastDate = nil;
lastModifiedDate = "2011-07-22 21:46:54 +0000";
lines =     ();
name = "Untitled Model";
nodes =     ();
profiles =     ();
test = 0;
warningString = nil;
})
2011-07-23 07:46:58.019 Z2[15774:a0f] Object: <Drawing: 0x20004f140> (entity: Drawing; id: 0x200062280 <x-coredata:///Drawing/t527187E0-DC67-4A9E-BA88-67A4CD3445223> ; data: {
centrex = 0;
centrey = 0;
textSize = 12;
typeface = "Helvetica Neue";
zoomFactor = 1;
})
Program received signal:  “EXC_BAD_ACCESS”.
2011-07-23 07:46:58.012 Z2[15774:a0f]托管对象上下文:
2011-07-23 07:46:58.013 Z2[15774:a0f]持久性商店协调员:
2011-07-23 07:46:58.013 Z2[15774:a0f]实体:图形
...
2011-07-23 07:46:58.016 Z2[15774:a0f]实体:图纸
2011-07-23 07:46:58.018 Z2[15774:a0f]对象:(实体:图形;id:0x20003e400;数据:{
color=“(…非零…”);
createdDate=“2011-07-22 21:46:54+0000”;
errorString=nil;
firstDate=零;
lastDate=零;
lastModifiedDate=“2011-07-22 21:46:54+0000”;
行=();
name=“无标题模型”;
节点=();
轮廓=();
测试=0;
警告字符串=零;
})
2011-07-23 07:46:58.019 Z2[15774:a0f]对象:(实体:图形;id:0x200062280;数据:{
centrex=0;
centrey=0;
textSize=12;
字体=“Helvetica Neue”;
动物因子=1;
})
程序收到信号:“EXC\U坏访问”。
每个实体都有自己的子类NSManagedObject的类。每个属性都定义为动态属性。每个属性都有一个默认值,在这个值中使用它们是合理的

我看到其他人建议过多地发布这类问题,但我不会在核心数据代码的任何地方执行保留和发布。我选择在Graph对象之后插入哪个实体并不重要;他们都失败了

核心数据工作由一个框架(图)完成。框架是从一个基于文档的应用程序(Z)调用的,该应用程序将框架的文档创建对象子类化

以下是“保存”面板末尾的堆栈跟踪:

Program received signal:  “EXC_BAD_ACCESS”.
sharedlibrary apply-load-rules all
(gdb) bt
#0  0x00007fff80352480 in CFDictionarySetValue ()
#1  0x00007fff86c0b2ed in _PFCMT_SetValue ()
#2  0x00007fff86c342c8 in -[NSManagedObjectContext(_NSInternalAdditions) _changeIDsForManagedObjects:toIDs:] ()
#3  0x00007fff86c44b2b in -[NSSQLCore commitChanges:] ()
#4  0x00007fff86c3926e in -[NSSQLCore saveChanges:] ()
#5  0x00007fff86bfcc8b in -[NSSQLCore executeRequest:withContext:] ()
#6  0x00007fff86bfc051 in -[NSPersistentStoreCoordinator(_NSInternalMethods) executeRequest:withContext:] ()
#7  0x00007fff86c30123 in -[NSManagedObjectContext save:] ()
#8  0x00007fff8144179d in -[NSPersistentDocument writeToURL:ofType:forSaveOperation:originalContentsURL:error:] ()
#9  0x0000000100020460 in -[GraphDocument writeToURL:ofType:forSaveOperation:originalContentsURL:error:] (self=0x2000c4be0, _cmd=0x7fff816eb6ce, absoluteURL=0x20004eec0, typeName=0x20000ea80, saveOperation=1, absoluteOriginalContentsURL=0x0, outError=0x7fff5fbfe308) at /<path to>/GraphDocument.m:380
#10 0x00000001000010bc in -[ZDocument writeToURL:ofType:forSaveOperation:originalContentsURL:error:] (self=0x2000c4be0, _cmd=0x7fff816eb6ce, absoluteURL=0x20004eec0, typeName=0x20000ea80, saveOperation=1, absoluteOriginalContentsURL=0x0, outError=0x7fff5fbfe308) at /<path to>/ZDocument.m:110
#11 0x00007fff81316bd2 in -[NSDocument _writeSafelyToURL:ofType:forSaveOperation:error:] ()
#12 0x00007fff81315fd0 in -[NSDocument writeSafelyToURL:ofType:forSaveOperation:error:] ()
#13 0x00007fff814406dc in -[NSPersistentDocument writeSafelyToURL:ofType:forSaveOperation:error:] ()
#14 0x00007fff81311356 in -[NSDocument saveToURL:ofType:forSaveOperation:error:] ()
#15 0x00007fff81314404 in -[NSDocument _saveToURL:ofType:forSaveOperation:delegate:didSaveSelector:contextInfo:] ()
#16 0x00007fff81311637 in -[NSDocument saveToURL:ofType:forSaveOperation:delegate:didSaveSelector:contextInfo:] ()
#17 0x00007fff8131377c in -[NSDocument _savePanelWasPresented:withResult:inContext:] ()
#18 0x00007fff8148335e in -[NSSavePanel _didEndSheet:returnCode:contextInfo:] ()
#19 0x00007fff81227d45 in -[NSApplication endSheet:returnCode:] ()
程序收到信号:“EXC\u坏访问”。
sharedlibrary应用所有加载规则
(gdb)英国电信
#CFDictionarySetValue()中的0 0x00007fff80352480
#1 0x00007fff86c0b2ed输入PFCMT设置值()
#2 0x00007fff86c342c8 in-[NSManagedObjectContext(\u NSInternalAdditions)\u changeIDsForManagedObjects:toIDs:()
#3 0x00007fff86c44b2b in-[NSSQLCore提交变更:]()
#4 0x00007fff86c3926e in-[NSSQLCore saveChanges:]()
#5 0x00007fff86bfcc8b in-[NSSQLCore executeRequest:withContext:]()
#6 0x00007fff86bfc051 in-[NSPersistentStoreCoordinator(\u NSInternalMethods)executeRequest:withContext:()
#7 0x00007fff86c30123 in-[NSManagedObjectContext保存:]()
#8 0x00007fff8144179d in-[NSPersistentDocument writeToURL:类型:forSaveOperation:原始内容URL:错误:()
#9 0x0000000100020460 in-[GraphDocument writeToURL:of Type:forSaveOperation:originalContentsURL:error:(self=0x2000c4be0,_cmd=0x7fff816eb6ce,absoluteURL=0x20004eec0,typeName=0x20000ea80,saveOperation=1,AbsoluteInitialContentSurl=0x0,outError=0x7fff5fbfe308)at//GraphDocument.m:380
#10 0x00000001000010bc in-[ZDocument writeToURL:of type:forSaveOperation:originalContentsURL:error:(self=0x2000c4be0,_cmd=0x7fff816eb6ce,absoluteURL=0x20004eec0,typeName=0x20000ea80,saveOperation=1,AbsoluteInitialContentSurl=0x0,outError=0x7fff5fbfe308)位于//ZDocument.m:110
#11 0x00007fff81316bd2 in-[NSDocument]中的0x00007fff81316bd2\u写入安全URL:类型:forSaveOperation:错误:()
#12 0x00007fff81315fd0 in-[NSDocument writeSafelyToURL:类型:forSaveOperation:错误:()
#13 0x00007fff814406dc in-[NSPersistentDocument writeSafelyToURL:的类型:forSaveOperation:错误:()
#14 0x00007fff81311356 in-[NSDocument saveToURL:类型:forSaveOperation:错误:()
#15 0x00007fff81314404 in-[NSDocument\u saveToURL:类型:forSaveOperation:委托:didSaveSelector:contextInfo:()
#16 0x00007fff81311637 in-[NSDocument saveToURL:类型:forSaveOperation:委托:didSaveSelector:contextInfo:()
#17 0x00007fff8131377c in-[NSDocument\u存储面板显示:结果:inContext:()
#18 0x00007fff8148335e in-[NSSavePanel_didEndSheet:returnCode:contextInfo:()
#19 0x00007fff81227d45 in-[N应用程序尾页:返回代码:]()

由于它在更改对象ID时失败,我猜问题在于关系。最可能的问题是所需的关系、删除规则或验证。

如果不先插入
图形
对象,是否可以插入
图形
对象?是否在所有异常情况下都停止?我想知道在您获得EXC_BAD_访问权限之前是否会出现错误。某些实体与任何其他实体无关。没有删除规则,验证仅限于IDE中的内容:数字的最大值、最小值和默认值,字符串没有验证。