Слишком много данных (одновременно) для базовых данных? - PullRequest
0 голосов
/ 14 марта 2012

В моем приложении для iPhone используются основные данные, и в большинстве случаев все в порядке. Но вот проблема: после определенного объема данных он останавливается при первом запуске (где должны быть загружены основные объекты данных).

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

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

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

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

Любой комментарий или совет для лучшего способа будет принят.

1 Ответ

0 голосов
/ 16 марта 2012

Не совсем понятно, что вы подразумеваете под словом «оно терпит неудачу».

Однако, если вы используете SQLite, при загрузке в CoreData, если вы имеете в виду «создавать и сохранять» сущности при запуске, чтобы заполнитьCoreData, затем не забудьте вызвать [managedObjectContext save ...] только в конце, особенно с большим объемом данных, но создайте и сохраните разумный набор NSManagedObject.

В противном случае, если вы имеете в виду, что у вас есть большое количестводанных, которые извлекаются как NSManagedObject, вероятно, загруженные в UITableView, рассмотрите возможность использования какой-либо операции NSOperation для асинхронной загрузки.

Если эти два случая не относятся к вам, просто скажите нам, какую ошибку вы получаете, или чтоВы имеете в виду под «провал» или «срыв».

...