2013-12-09 86 views
1

我們一直在野外發生這種類型的崩潰,當然我們不能在本地回購它。它似乎只發生在ios 7上。它是一個NSInternalInconsistencyException的事實告訴我們這是一個內部的NSAssertion錯誤。任何想法,以防止發生這將不勝感激。「[EKObjectID entityName]」crash

這裏是堆棧跟蹤:

Thread : Fatal Exception: NSInternalInconsistencyException, 
Unknown entity type while trying to create an object ID 

0 CoreFoundation     0x2d69bf4b __exceptionPreprocess + 130 
1 libobjc.A.dylib    0x37a2b6af objc_exception_throw + 38 
2 CoreFoundation     0x2d69be25 +[NSException raise:format:] 
3 Foundation      0x2e043fe3 -[NSAssertionHandler handleFailureInMethod:object:file:lineNumber:description:] + 90 
4 EventKit      0x2ddf2e2b -[EKObjectID entityName] + 202 
5 EventKit      0x2ddf2c65 -[EKEventStore _addFetchedObjectWithID:] + 56 
6 EventKit      0x2ddf2c0d __78-[EKEventStore registerFetchedObjectWithID:withDefaultLoadedProperties:inSet:]_block_invoke + 80 
7 libdispatch.dylib    0x37f0ed07 _dispatch_client_callout + 22 
8 libdispatch.dylib    0x37f20e73 _dispatch_barrier_sync_f_invoke + 26 
9 EventKit      0x2ddf2b05 -[EKEventStore registerFetchedObjectWithID:withDefaultLoadedProperties:inSet:] + 156 
10 EventKit      0x2ddfa371 __41-[EKPredicateSearch startWithCompletion:]_block_invoke + 652 
11 EventKit      0x2ddfa001 -[EKDaemonConnection _processReplyWithID:data:finished:] + 264 
12 EventKit      0x2ddf9ef3 CADReceiveReply + 98 
13 EventKit      0x2ddf9e5f _XReply + 102 
14 EventKit      0x2ddf9dd5 ClientCallbacks_server + 64 
15 libdispatch.dylib    0x37f11a9d dispatch_mig_server$VARIANT$up + 312 
16 EventKit      0x2ddf9d6d __43-[EKDaemonConnection initWithOptions:path:]_block_invoke16 + 40 
17 libdispatch.dylib    0x37f0f057 _dispatch_source_invoke$VARIANT$up + 258 
18 libdispatch.dylib    0x37f218f9 _dispatch_root_queue_drain + 76 
19 libdispatch.dylib    0x37f21b79 _dispatch_worker_thread2 + 56 
20 libsystem_pthread.dylib  0x38050dbf _pthread_wqthread + 298 
21 libsystem_pthread.dylib  0x38050c84 start_wqthread + 8
+0

Herman我有同樣的問題,到目前爲止無法複製,但如果我有任何其他發現將報告回來。 –

+0

我只在調試器中激發過一次 - 在工作者線程中,不幸的是,它沒有得到有關根本原因的明顯信息。在我的結尾,違規呼叫是EKEventStoreChangedNotification的結果。我也嘗試在訂閱的.ical Feed中插入表情符號和其他unicode字符而沒有任何結果。你有沒有找到一種可靠的方式來激發這個,因爲你的初始職位,或任何額外的信息分享? –

+0

@HenrikHartz還沒有,但我正在追逐它。看起來它與[EKEventStore eventsMatchingPredicate:]有關,因爲在上面的堆棧跟蹤中有一個「EKPredicateSearch startWithCompletion」,這是有意義的。如果我找到任何東西,將在此更新 – Herman

回答

2

好像這個bug的原因與我們多少事件試圖在我們的應用程序來獲得。這是我對蘋果缺陷報告(15424747)的回覆。

看來,當我們的應用在具有大量日期的eventStore上進行謂詞時會引入此錯誤。這裏是代碼:

NSPredicate *predicate = [self.eventStore predicateForEventsWithStartDate:startDate endDate:endDate calendars:nil]; 
if (!self.masterListSortDescriptor) {  
    self.masterListSortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"startDate" ascending:YES]; 
} 
NSArray *result = [[self.eventStore eventsMatchingPredicate:predicate] sortedArrayUsingDescriptors:@[self.masterListSortDescriptor]]; 

如果startDate = Today - 1 year and endDate = Today + 2 years,這段代碼將失敗。我們通過縮小範圍startDate = Today - 6 months和endDate = Today + 1 year來「解決」了這個問題,這個bug從我們的崩潰日誌中消失。