Основные данные, вызывающие сбой приложения во время миграции - PullRequest
2 голосов
/ 29 января 2010

Я отправил обновление своего приложения в App Store, для которого требуется обновить / перенести модель базовых данных. Это всего лишь простое изменение с добавлением руки, заполненной новыми атрибутами, и переименованной. Кажется, для большинства пользователей все прошло нормально, однако у меня было 2 сообщения о сбоях, которые я не понимаю.

Похоже, что сбои происходят при выполнении автоматической предполагаемой миграции. Мои варианты миграции NSMigratePersistentStoresAutomaticallyOption и NSInferMappingModelAutomaticallyOption.

У кого-нибудь есть идеи, что так долго мигрирует? Это вызывает сбои при каждом запуске приложения, поэтому оно непригодно для использования этими пользователями. Они оба работают под управлением iPhone OS 3.1.2.

Любая помощь будет принята с благодарностью.

Сообщить о пользователе A

com.foo.MyApp failed to launch in time 
elapsed total CPU time (seconds): 19.970 (user 14.130, system 5.840), 92% CPU 
elapsed application CPU time (seconds): 9.910, 45% CPU

Thread 0:
0   CoreData                        0x00093d08 -[NSPersistentStoreCoordinator dealloc] + 0
1   CoreFoundation                  0x0003963a -[NSObject release] + 28
2   CoreData                        0x000b6e0e -[NSSQLiteInPlaceMigrationManager migrateStoreFromURL:type:options:withMappingModel:toDestinationURL:destinationType:destinationOptions:error:] + 1470
3   CoreData                        0x000aceb0 -[NSStoreMigrationPolicy(InternalMethods) migrateStoreAtURL:toURL:storeType:options:withManager:error:] + 92
4   CoreData                        0x000ad6f0 -[NSStoreMigrationPolicy migrateStoreAtURL:withManager:metadata:options:error:] + 72
5   CoreData                        0x000ac9ee -[NSStoreMigrationPolicy(InternalMethods) _gatherDataAndPerformMigration:] + 880
6   CoreData                        0x0000965c -[NSPersistentStoreCoordinator addPersistentStoreWithType:configuration:URL:options:error:] + 1328

Unknown thread crashed with unknown flavor: 5, state_count: 1

Сообщить о пользователе B

com.foo.MyApp failed to suspend in time 
elapsed total CPU time (seconds): 18.580 (user 13.320, system 5.260), 93% CPU 
elapsed application CPU time (seconds): 8.340, 42% CPU

Thread 0:
0   libsqlite3.dylib                0x00022f14 sqlite3_backup_init + 2396
1   libsqlite3.dylib                0x00025474 sqlite3_backup_init + 11964
2   libsqlite3.dylib                0x000255dc sqlite3_backup_init + 12324
3   libsqlite3.dylib                0x0002aa74 sqlite3_open16 + 16084
4   libsqlite3.dylib                0x00047838 sqlite3_prepare16 + 46920
5   libsqlite3.dylib                0x00002940 sqlite3_step + 44
6   CoreData                        0x00011958 _execute + 44
7   CoreData                        0x000113e0 -[NSSQLiteConnection execute] + 696
8   CoreData                        0x000994be -[NSSQLConnection prepareAndExecuteSQLStatement:] + 26
9   CoreData                        0x000be14c -[_NSSQLiteStoreMigrator performMigration:] + 244
10  CoreData                        0x000b6c60 -[NSSQLiteInPlaceMigrationManager migrateStoreFromURL:type:options:withMappingModel:toDestinationURL:destinationType:destinationOptions:error:] + 1040
11  CoreData                        0x000aceb0 -[NSStoreMigrationPolicy(InternalMethods) migrateStoreAtURL:toURL:storeType:options:withManager:error:] + 92
12  CoreData                        0x000ad6f0 -[NSStoreMigrationPolicy migrateStoreAtURL:withManager:metadata:options:error:] + 72
13  CoreData                        0x000ac9ee -[NSStoreMigrationPolicy(InternalMethods) _gatherDataAndPerformMigration:] + 880
14  CoreData                        0x0000965c -[NSPersistentStoreCoordinator addPersistentStoreWithType:configuration:URL:options:error:] + 1328

Unknown thread crashed with unknown flavor: 5, state_count: 1

1 Ответ

9 голосов
/ 29 января 2010

Первая строка - это ваш ключ к пониманию того, что происходит. В обоих случаях сохранение / сохранение основных данных занимает слишком много времени. Приложение не аварийно завершает работу из-за ошибки, но оно удаляется ОС, поскольку оно не завершает работу или не запускается своевременно.

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

Проблема с завершением работы означает, что вы, вероятно, не делаете инкрементные сохранения во время работы приложения, а вместо этого делаете одно большое сохранение при завершении работы приложения. В идеале ваше приложение должно сохранять на диск всякий раз, когда происходит логический перерыв в рабочем процессе. Если вы добавите сохранения в приложение, которое поможет или решит проблему с завершением работы.

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