Основные данные, вызывающие сбой на iPhone 3 - PullRequest
1 голос
/ 13 июня 2011

Я получаю странную ошибку с основными данными.Иногда, но не всегда, происходит сбой моего приложения, когда я пытаюсь получить доступ к основному объекту данных.

Это происходит регулярно на iPhone 3 и только иногда на iPhone 4.Я посмотрел журнал своего устройства и сузил его до проблемы с основными данными.Ниже приведена строка, на которую ссылаются журналы, tripInstructor - это объект основных данных, его свойство класса AppManager.Не уверен, что это имеет большое значение, но я объявляю свойство «неатомным, сохраняйте».

Спасибо за любые советы

[self.supervisorLbl setText:[AppManager sharedAppManager].tripInstructor.name];

<code>
Date/Time:       2011-06-12 20:55:24.865 +1000
OS Version:      iPhone OS 4.3.3 (8J2)
Report Version:  104</p>

<p>Exception Type:  EXC_CRASH (SIGABRT)
Exception Codes: 0x00000000, 0x00000000
Crashed Thread:  0</p>

<p>Thread 0 name:  Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0   libsystem_kernel.dylib          0x33e8da1c <strong>pthread_kill + 8
1   libsystem_c.dylib               0x35e5b3b4 pthread_kill + 52
2   libsystem_c.dylib               0x35e53bf8 abort + 72
3   libstdc++.6.dylib               0x33508a64 __gnu_cxx::__verbose_terminate_handler() + 376
4   libobjc.A.dylib                 0x33f1106c _objc_terminate + 104
5   libstdc++.6.dylib               0x33506e36 _<em>cxxabiv1::</em>_terminate(void (*)()) + 46
6   libstdc++.6.dylib               0x33506e8a std::terminate() + 10
7   libstdc++.6.dylib               0x33506efe __cxa_rethrow + 62
8   libobjc.A.dylib                 0x33f10fd8 objc_exception_rethrow + 4
9   CoreData                        0x35624f66 _PFFaultHandlerLookupRow + 1450
10  CoreData                        0x356799ba -[NSFaultHandler fulfillFault:withContext:] + 14
11  CoreData                        0x35678782 _PF_FulfillDeferredFault + 354
12  CoreData                        0x35623f18 _sharedIMPL_pvfk_core + 52
13  CoreData                        0x35626b68 _pvfk_5 + 4
14  eLogger                         0x0000e346 -[VicLogVC viewWillAppear:] (VicLogVC.m:207)
15  UIKit                           0x3636bf14 -[UINavigationController _startTransition:fromViewController:toViewController:] + 604
16  UIKit                           0x3636bc3c -[UINavigationController _startDeferredTransitionIfNeeded] + 176
17  UIKit                           0x3635dd56 -[UINavigationController pushViewController:transition:forceImmediate:] + 634
18  UIKit                           0x3635dacc -[UINavigationController pushViewController:animated:] + 28
19  eLogger                         0x00025332 -[TripScreenVC _populateAndDisplayVicLog] (TripScreenVC.m:221)
20  eLogger                         0x00025492 -[TripScreenVC _determineLogScreen] (TripScreenVC.m:258)
21  eLogger                         0x000255d4 -[TripScreenVC buttonPressed:] (TripScreenVC.m:307)
22  CoreFoundation                  0x30d4356a -[NSObject(NSObject) performSelector:withObject:withObject:] + 18
23  UIKit                           0x36343ec2 -[UIApplication sendAction:to:from:forEvent:] + 78
24  UIKit                           0x36343e62 -[UIApplication sendAction:toTarget:fromSender:forEvent:] + 26
25  UIKit                           0x36343e34 -[UIControl sendAction:to:forEvent:] + 32
26  UIKit                           0x36343b86 -[UIControl(Internal) _sendActionsForEvents:withEvent:] + 350
27  UIKit                           0x3634441c -[UIControl touchesEnded:withEvent:] + 336
28  UIKit                           0x36342bee -[UIWindow _sendTouchesForEvent:] + 362
29  UIKit                           0x36342568 -[UIWindow sendEvent:] + 256
30  UIKit                           0x3632b30c -[UIApplication sendEvent:] + 292
31  UIKit                           0x3632ac4c _UIApplicationHandleEvent + 5084
32  GraphicsServices                0x34e2be70 PurpleEventCallback + 660
33  CoreFoundation                  0x30daaa90 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION</strong> + 20
34  CoreFoundation                  0x30dac838 __CFRunLoopDoSource1 + 160
35  CoreFoundation                  0x30dad606 __CFRunLoopRun + 514
36  CoreFoundation                  0x30d3debc CFRunLoopRunSpecific + 224
37  CoreFoundation                  0x30d3ddc4 CFRunLoopRunInMode + 52
38  GraphicsServices                0x34e2b418 GSEventRunModal + 108
39  GraphicsServices                0x34e2b4c4 GSEventRun + 56
40  UIKit                           0x36355d62 -[UIApplication _run] + 398
41  UIKit                           0x36353800 UIApplicationMain + 664
42  eLogger                         0x00002ff8 main (main.m:14)
43  eLogger                         0x00002fa0 start + 32

1 Ответ

1 голос
/ 13 июня 2011

Скорее всего, вы держитесь за недопустимую ссылку на управляемый объект, похоже, он был превращен в сбой контекстом управляемого объекта, возможно, после вызова -save: или -reset в контексте.

Если вы удалили объект из своего хранилища и все еще содержали ссылку на управляемый объект в ivar, то это может быть причиной этой ошибки. CoreData удалит объект и превратится в ошибку при вызове -save: (после чего вы должны обнулить и сбросить свои ивары). Но, когда вы попытаетесь сбить объект (получив доступ к одному или нескольким его свойствам), он не будет найден в хранилище, потому что вы удалили его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...