2010-09-16 58 views
0

我有小型COCOA Mac OS應用程序與核心數據一起玩。 我已經覆蓋默認的保存功能來做保存文檔後的額外工作(也自動保存一個壓縮副本)。在NSPersistentDocument中保存核心數據sqlite時出錯

每次我保存 - 計劃與行,其中我打電話EXC_BAD_ACCESS崩潰[超級writeToURL ...] 好部分是 - 文件被正確保存。下面是代碼:

- (BOOL)writeToURL:(NSURL *)absoluteURL ofType:(NSString *)typeName forSaveOperation:(NSSaveOperationType)saveOperation originalContentsURL:(NSURL *)absoluteOriginalContentsURL error:(NSError **)error{ 

     NSLog(@"Overriding SAVE operation"); 
     // Crash everytime with objc_msSend or EXC_BAD_ACCESS (but saves properly): 
     BOOL res = [super writeToURL:(NSURL *)absoluteURL ofType:(NSString *)typeName forSaveOperation:(NSSaveOperationType)saveOperation originalContentsURL:(NSURL *)absoluteOriginalContentsURL error:(NSError **)error]; 

     if(res){ // zip and save zipped copy...}.. 
    } 

每次我相似但不相同的堆棧跟蹤,說關於不與persistentStoreCoordinator除去一些認識選擇或問題。

我coordinaror配置簡單的方法:

NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys: 

          [NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption, 
          [NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption, nil]; 

任何人有一個線索WHT可能是happenin? 我無法跟蹤它現在很長一段時間......

調試器堆棧跟蹤:

#0 0x9141f4e6 in objc_exception_throw 
#1 0x951288e8 in +[NSException raise:format:arguments:] 
#2 0x9512885a in +[NSException raise:format:] 
#3 0x956837dc in -[_NSManagedProxy _entity] 
#4 0x9568392a in -[_NSManagedProxy fetchRequestWithSortDescriptors:limit:] 
#5 0x95961f4a in -[_NSManagedProxy _storesDidChange:] 
#6 0x95f801c3 in _nsnote_callback 
#7 0x950b03c3 in __CFXNotificationPost 
#8 0x950afdca in _CFXNotificationPostNotification 
#9 0x95f75090 in -[NSNotificationCenter postNotificationName:object:userInfo:] 
#10 0x906da1dc in -[NSPersistentStoreCoordinator(_NSInternalMethods) _postStoresChangedNotificationsForStores:changeKey:options:] 
#11 0x906cbd52 in -[NSPersistentStoreCoordinator addPersistentStoreWithType:configuration:URL:options:error:] 
#12 0x9597f2e7 in -[NSPersistentDocument configurePersistentStoreCoordinatorForURL:ofType:modelConfiguration:storeOptions:error:] 
#13 0x00002a35 in -[MyDocument configurePersistentStoreCoordinatorForURL:ofType:modelConfiguration:storeOptions:error:] at MyDocument.m:79 
#14 0x95c3536f in -[NSPersistentDocument(NSDeprecatedInternal) _configurePersistentStoreCoordinatorForURL:ofType:error:] 
#15 0x9597f585 in -[NSPersistentDocument writeToURL:ofType:forSaveOperation:originalContentsURL:error:] 
#16 0x00002ab9 in -[MyDocument writeToURL:ofType:forSaveOperation:originalContentsURL:error:] at MyDocument.m:90 
#18 0x95822a4a in -[NSDocument writeSafelyToURL:ofType:forSaveOperation:error:] 

感謝

+3

「說不識別選擇器」請告訴我們哪個選擇器。爲什麼你要在[超級wirteToURL ....]的電話中對每個參數進行強制轉換 – 2010-09-16 06:26:08

+0

Oppps。我沒有注意到這個演員。非常感謝您發現這一點。我一定是從Ctrl + C那裏得到的;-)。 Compliter甚至沒有「警告」它。目前我正在重新設計整個數據模型,因爲我在模型圖視圖中發現了一個奇怪的錯誤。 Xcode以某種方式加入了2張桌子。我不知道這是否是問題。當我完成重新連接綁定時,我會回到它。 – Lukasz 2010-09-16 15:23:29

+0

如果問題仍然存在,請按照Martin的建議發佈您收到的實際消息。在處理編程問題時,解釋總是錯誤的。 – 2010-09-16 18:42:22

回答

0

謝謝你們的幫助。重新創建在xcdatamoel視覺視圖中以奇怪方式行事的表格現在一切正常。圖表視圖中的兩個表格連在一起,但仍然在實體列表中可見。我無法找到一種方法來將它們分開而不刪除模型本身。