Сбой делает недействительным URL для NSPersistentStoreCoordinator - PullRequest
0 голосов
/ 06 июля 2010

У меня есть приложение Core Data, в котором есть ошибка, приводящая к сбою приложения, и я еще не выяснил ее причину. Одним из результатов сбоя является то, что при следующем запуске приложения оно не может открыть постоянное хранилище, используемое приложением ранее. Следующая ошибка возвращается из метода addPersistentStoreWithType::

NSUnderlyingException = Error validating url for store;

И, конечно, он не может получить ни один из объектов, ранее сохраненных приложением. Кто-нибудь знает, что может привести к тому, что приложение больше не сможет найти свое постоянное хранилище?

Сбой, приводящий к закрытию приложения до всего этого, приводит к следующему журналу сбоев:

Exception Type:  EXC_CRASH (SIGABRT)
Exception Codes: 0x00000000, 0x00000000
Crashed Thread:  0

Thread 0 Crashed:
0   libSystem.B.dylib              0x0007e98c __kill + 8
1   libSystem.B.dylib              0x0007e97c kill + 4
2   libSystem.B.dylib              0x0007e96e raise + 10
3   libSystem.B.dylib              0x0009361a abort + 34
4   libstdc++.6.dylib              0x000453b0 __gnu_cxx::__verbose_terminate_handler() + 376
5   libobjc.A.dylib                0x00005858 _objc_terminate + 104
6   libstdc++.6.dylib              0x00043776 __cxxabiv1::__terminate(void (*)()) + 46
7   libstdc++.6.dylib              0x000437ca std::terminate() + 10
8   libstdc++.6.dylib              0x00043896 __cxa_throw + 74
9   libobjc.A.dylib                0x00004714 objc_exception_throw + 64
10  Foundation                     0x000013c2 __NSThreadPerformPerform + 570
11  CoreFoundation                 0x00056a96 CFRunLoopRunSpecific + 1834
12  CoreFoundation                 0x00056356 CFRunLoopRunInMode + 42
13  GraphicsServices               0x00003b2c GSEventRunModal + 108
14  GraphicsServices               0x00003bd8 GSEventRun + 56
15  UIKit                          0x00002768 -[UIApplication _run] + 384
16  UIKit                          0x0000146c UIApplicationMain + 688
17  Meetchu                        0x00002568 main (main.m:14)
18  Meetchu                        0x0000251c start + 32

Я не могу понять, что происходит из этой информации. Кто-нибудь может помочь с любой из этих ошибок?

Большое спасибо заранее.

Ответы [ 2 ]

1 голос
/ 07 июля 2010

Если вы сохраняете фактический URL-адрес в файле в каталоге приложения, а не восстанавливаете его каждый раз относительно каталога приложения, то неверный URL-адрес является результатом того, что симулятор / устройство изменило имя каталога приложения на случайный UUID. Это происходит иногда в ответ на сбои.

Очевидным первым шагом является регистрация URL-адреса и проверка, действительно ли магазин находится в этом месте.

0 голосов
/ 06 июля 2010

Дрю,

Не видя некоторого кода, я могу сказать вам, что одним из источников агонии для меня, когда я только начинал с Core Data, было управление версиями ваших моделей.Если вы каким-либо образом изменили модель управляемого объекта, это приведет к аварийному завершению работы вашего приложения без некоторого версионного (т. Е. Облегченного) кода.

Возможно, это не источник вашей проблемы, а одна вещьВы можете попытаться удалить приложение из симулятора iPhone или использовать «Сбросить содержимое и настройки» в меню симулятора iPhone.Если это решит проблему, то вы смотрите на проблему миграции.

Cheers.

...