2016-08-08 3 views
12

저장을 수행 할 때 일부 사용자에게 CoreData 오류가 발생합니다. 이 오류 또는 스택 추적을 상징하는 방법에 대한 정보를 온라인에서 찾을 수 없었습니다.CoreData ManagedObjectContext 재귀 저장 오류

오류 메시지는 attempt to recursively call -save: on the context aborted, stack trace이며 아래에 전체 오류 메시지가 있습니다.

Doe 사람은 어떤 문제가 있는지 파악하는 방법에 대한 힌트 나 아이디어가 있습니까?

Error Domain=NSCocoaErrorDomain Code=132001 "(null)" UserInfo={message=attempt to recursively call -save: on the context aborted, stack trace=(
0 CoreData       0x0000000188cbe70c + 164 
1 Primetime       0x0000000100077ea4 Primetime + 130724 
2 Primetime       0x00000001000ae988 Primetime + 354696 
3 Primetime       0x0000000100081674 Primetime + 169588 
4 Primetime       0x00000001000802ac Primetime + 164524 
5 CoreData       0x0000000188d8bbd4 + 4568 
6 CoreData       0x0000000188d8a9ec + 124 
7 CoreFoundation      0x00000001869ac24c + 20 
8 CoreFoundation      0x00000001869ab950 + 400 
9 CoreFoundation      0x00000001869ab6cc + 60 
10 CoreFoundation      0x0000000186a187bc + 1504 
11 CoreFoundation      0x00000001868ef32c _CFXNotificationPost + 376 
12 Foundation       0x000000018738296c + 68 
13 CoreData       0x0000000188cc16e8 + 724 
14 CoreData       0x0000000188d43ca4 + 1336 
15 CoreData       0x0000000188cbfd04 + 2116 
16 CoreData       0x0000000188cbe808 + 416 
17 Primetime       0x0000000100077ea4 Primetime + 130724 
18 Primetime       0x0000000100089968 Primetime + 203112 
19 Primetime       0x00000001001d47c0 Primetime + 1558464 
20 libdispatch.dylib     0x0000000186459058 + 24 
21 libdispatch.dylib     0x0000000186459018 + 16 
22 libdispatch.dylib     0x000000018645dbcc _dispatch_main_queue_callback_4CF + 1000 
23 CoreFoundation      0x00000001869bfc48 + 12 
24 CoreFoundation      0x00000001869bd834 + 1660 
25 CoreFoundation      0x00000001868ed764 CFRunLoopRunSpecific + 292 
26 GraphicsServices     0x00000001882f0198 GSEventRunModal + 180 
27 UIKit        0x000000018c8668d0 + 664 
28 UIKit        0x000000018c86163c UIApplicationMain + 208 
29 Primetime       0x00000001000ada1c Primetime + 350748 
30 libdyld.dylib      0x00000001864905b8 + 4 
+2

'NSManagedObjectContextDidSaveNotification'이 게시 될 때 실행되는 코드에서'save :'를 호출 할 가능성이 있습니까? –

+1

NSManagedObjectContextObjectsDidChange를 사용하고 있지만 알림을 사용하고 있지 않습니다. 방금'NSManagedObjectContextObjectsDidChange'에 대한 문서를 확인했는데 아직'save'를 호출하는 것이 안전하지 않다고합니다. 나는 NSManagedObjectContextObjectsDidChange'에서 저장이 트리거 될 수있는 코드에서 일부 지점을 발견했습니다. 팁을 주셔서 감사 드리겠습니다. – duncanc4

+0

iOS10 베타 4에서 iOS 9.3.3에서는 일어나지 않으며 해결책을 찾을 수 없습니다. 사용자를 업그레이드 하시겠습니까? – Grenter

답변

17

나는 Xcode8/ios10과 동일한 문제가있었습니다. 문제는 다음 메소드 내에서 핵심 데이터 컨텍스트를 저장하라는 호출 때문이었습니다.

- (void)controllerDidChangeContent:(NSFetchedResultsController *)controller { 
    [self methodCallingSaveContext]; 
} 

methodCallingSaveContext 

는 핵심 데이터 컨텍스트를 저장 호출합니다.

- (void)controllerDidChangeContent:(NSFetchedResultsController *)controller { 
     dispatch_async(dispatch_get_main_queue(), ^{ 
       [self methodCallingSaveContext]; 
     }); 
} 

이제 모든 것을 다시 작동된다 은 재귀 호출을 중단하기 위해 나는 다음과 같은 방법으로 방법을 다시 썼다.