尝试保存CoreData时出现异常

时间:2011-06-06 21:20:16

标签: iphone core-data

NSError *error;
if (managedObjectContext != nil) {
    if ([managedObjectContext hasChanges] && ![managedObjectContext save:&error]) {
        DLog(@"Unresolved error %@, %@", error, [error userInfo]);
        abort();
    }
}

在CoreDate中使用上述代码保存一些项目时,我得到以下异常。 managedObjectContext有50个未解析的删除和700个未解析的插入。显然它有删除问题。关于如何追踪它的任何想法?

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSSet0 removeObject:]: unrecognized selector sent to instance 0x61a4840'
*** Call stack at first throw:
(
    0   CoreFoundation                      0x018d45a9 __exceptionPreprocess + 185
    1   libobjc.A.dylib                     0x01a28313 objc_exception_throw + 44
    2   CoreFoundation                      0x018d60bb -[NSObject(NSObject) doesNotRecognizeSelector:] + 187
    3   CoreFoundation                      0x01845966 ___forwarding___ + 966
    4   CoreFoundation                      0x01845522 _CF_forwarding_prep_0 + 50
    5   CoreData                            0x00ffa31d -[NSManagedObject(_NSInternalMethods) _excludeObject:fromPropertyWithKey:andIndex:] + 397
    6   CoreData                            0x00fef7d1 -[NSManagedObject(_NSInternalMethods) _maintainInverseRelationship:forProperty:oldDestination:newDestination:] + 449
    7   CoreData                            0x01043b55 -[NSManagedObject(_NSInternalMethods) _propagateDelete:] + 1541
    8   CoreData                            0x00ffa02a -[NSManagedObject(_NSInternalMethods) _propagateDelete] + 42
    9   CoreData                            0x00ff9e53 -[NSManagedObjectContext(_NSInternalChangeProcessing) _propagateDeletesUsingTable:] + 515
    10  CoreData                            0x00ff9c12 -[NSManagedObjectContext(_NSInternalChangeProcessing) _processDeletedObjects:] + 146
    11  CoreData                            0x00fecba8 -[NSManagedObjectContext(_NSInternalChangeProcessing) _propagatePendingDeletesAtEndOfEvent:] + 104
    12  CoreData                            0x00fb8982 -[NSManagedObjectContext(_NSInternalChangeProcessing) _processRecentChanges:] + 754
    13  CoreData                            0x00ff2715 -[NSManagedObjectContext save:] + 149
    14  Ace Metrix iPad                     0x00075153 +[CoreDataHelper saveCoreDate:] + 82
    15  Ace Metrix iPad                     0x0007a790 -[WSBreakingAds platformRequestFinishedWhidType:withResponse:] + 772
    16  Ace Metrix iPad                     0x00077c6d -[PlatformContainer operation:completedWithResponse:withNSManagedObjectContext:] + 1042
    17  Ace Metrix iPad                     0x000401ec -[WebServiceAuthServiceSoapBinding_getPartialAdvertisementsAfterDate connectionDidFinishLoading:] + 1209
    18  Foundation                          0x00182112 -[NSURLConnection(NSURLConnectionReallyInternal) sendDidFinishLoading] + 108
    19  Foundation                          0x0018206b _NSURLConnectionDidFinishLoading + 133
    20  CFNetwork                           0x00dec492 _ZN19URLConnectionClient23_clientDidFinishLoadingEPNS_26ClientConnectionEventQueueE + 220
    21  CFNetwork                           0x00eb76e1 _ZN19URLConnectionClient26ClientConnectionEventQueue33processAllEventsAndConsumePayloadEP20XConnectionEventInfoI12XClientEvent18XClientEventParamsEl + 293
    22  CFNetwork                           0x00de2c84 _ZN19URLConnectionClient13processEventsEv + 100
    23  CFNetwork                           0x00de2ad3 _ZN17MultiplexerSource7performEv + 251
    24  CoreFoundation                      0x018b58ff __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 15
    25  CoreFoundation                      0x0181388b __CFRunLoopDoSources0 + 571
    26  CoreFoundation                      0x01812d86 __CFRunLoopRun + 470
    27  CoreFoundation                      0x01812840 CFRunLoopRunSpecific + 208
    28  CoreFoundation                      0x01812761 CFRunLoopRunInMode + 97
    29  GraphicsServices                    0x01e3e1c4 GSEventRunModal + 217
    30  GraphicsServices                    0x01e3e289 GSEventRun + 115
    31  UIKit                               0x003eec93 UIApplicationMain + 1160
    32  Ace Metrix iPad                     0x00002814 main + 102
    33  Ace Metrix iPad                     0x000027a5 start + 53
)
terminate called after throwing an instance of 'NSException'

1 个答案:

答案 0 :(得分:1)

您正在removeObject:的不可变实例上调用NSSet。确保您使用的集合是NSMutableSet的实例。如果你可以在实际执行删除的地方发布代码,它可能对我们有所帮助。