Сбой основных данных в initWithManagedObjectModel - PullRequest
0 голосов
/ 17 ноября 2010

У меня есть следующий журнал сбоев от двух тестеров, разных устройств (3GS и 4) и версий (4.1 и 4.2 GM):

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

Thread 0 Crashed:
0   libSystem.B.dylib               0x000792d4 __kill + 8
1   libSystem.B.dylib               0x000792c4 kill + 4
2   libSystem.B.dylib               0x000792b6 raise + 10
3   libSystem.B.dylib               0x0008dd72 abort + 50
4   libstdc++.6.dylib               0x00044a20 __gnu_cxx::__verbose_terminate_handler() + 376
5   libobjc.A.dylib                 0x00006594 _objc_terminate + 104
6   libstdc++.6.dylib               0x00042df2 __cxxabiv1::__terminate(void (*)()) + 46
7   libstdc++.6.dylib               0x00042e46 std::terminate() + 10
8   libstdc++.6.dylib               0x00042f16 __cxa_throw + 78
9   libobjc.A.dylib                 0x000054c4 objc_exception_throw + 64
10  CoreData                        0x000030a6 -[NSPersistentStoreCoordinator initWithManagedObjectModel:] + 254
11  MyApp                           0x00002d50 -[FooAppDelegate persistentStoreCoordinator] (FooAppDelegate.m:249)
12  MyApp                           0x00002bb4 -[FooAppDelegate managedObjectContext] (FooAppDelegate.m:207)
13  MyApp                           0x000021b8 -[FooAppDelegate awakeFromNib] (FooAppDelegate.m:25)
[snip]

Это код из стандартного шаблона приложения Core DataТак что я не сильно изменился в этой области.Что я сделал, так это перешел от облегченной миграции к передаче nil в качестве параметров и удалил предыдущие файлы данных model.xcdatamodel, model2.xcdatamodel, ..., model7.xcdatamodel, за исключением последнего, который я переименовал из model7.xcdatamodel в модель.xcdatamodel.

Сбой не происходит на моих тестовых телефонах iPhone 4 и iPhone 3G, работающих под управлением 4.2.Я попросил своих тестеров удалить приложение со своих айфонов и переустановить его, но проблема та же.Все хорошо работает в симуляторе, для iOS4 до 4.2.Есть идеи, что здесь происходит?

Спасибо!

1 Ответ

0 голосов
/ 18 ноября 2010

Я думаю, что проблема была в основном в том, что я удалил все неиспользуемые модели данных, но мое переключение на текущую модель данных почему-то не осталось.

Когда я разветвился, чтобы попытаться исправить поврежденную версию, в git diff для одного из изменений была установлена ​​текущая версия модели из model7.xcdatamodel в model.xcdatamodel. Я вполне уверен, что сделал это раньше, поскольку маленькая зеленая галочка в XCode показала себя отлично только на единственной оставшейся модели данных, но по какой-то причине она не прилипла.

Были две ревизии между моей последней тестовой версией (0.19) и представленной версией (1.0.0). Я дважды проверил изменения в этих двух ревизиях, и одна из них устанавливает правильную текущую модель данных. Вот почему мои тесты с представленной версией работали (модель данных была установлена ​​правильно), но версия тестера не работала (потому что она была установлена ​​неправильно).

Рад, что наконец понял это. Мораль: Удвойте вдвойне, чтобы все ваши изменения модели данных были на месте.

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