2012-04-05 2 views
0

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

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSManagedObject persistentStore]: unrecognized selector sent to instance 0x3bebf50' 

Я воссоздал SQLite базы данных от модели и заселен база данных, но я все еще получаю ту же ошибку. Я проверил «Скомпилированные источники» и «Копировать ресурсы пакета» в разделе фаз сборки, и все файлы там.

Код: http://pastebin.com/fTTgEA3W

ломал мой мозг, и не могу понять, почему это не работает, любая помощь будет действительно оценить.

Благодарим вас за ваше время, и если вам нужна дополнительная информация, пожалуйста, дайте мне знать.

ответ

0

Первая мера: удалить приложение и переустановить.

Вторая мера: текстовый поиск по вызову persistentStore в вашем коде. По-видимому, это адрес, который является NSManagedObjectContext, который не имеет этого метода. Исправьте ошибку, если найдете ее.

Третья мера: просмотрите свои алгоритмы отдыха, чтобы убедиться, что вы правильно строите магазин. В моих проектах с большими магазинами у меня обычно есть флаг SETUP, который я включаю, если хранилище нужно импортировать из необработанных данных, которое обычно работает только в симуляторе из-за потребностей в памяти. (Когда SETUP выключен, и нет магазина, тот, который был сгенерирован ранее, скопирован.) Возможно, на iPad у вас недостаточно памяти для импорта данных.

+0

Спасибо вам за помощь. Я пытаюсь выполнить ваши шаги. «Возможно, на iPad у вас недостаточно памяти для импорта данных». Будет ли это означать, что мне нужно уменьшить количество строк в базе данных или использовать разные значения для методов, setFetchOffset, setFetchLimit, setFetchBatchSize? – JingJingTao

+0

Нет, я имею в виду, что вы импортируете необработанные данные на симуляторе, чтобы подготовить большую базу данных SQLite. Затем вы можете скопировать его в iPad (каталог документов программы), когда приложение будет запущено в первый раз. – Mundi

+0

Привет, Мунди, извините за поздний ответ. Я думаю, проблема заключается в том, что tableview пытается загрузить многие записи, и есть проблема с памятью, если я использую setFetchLimit, скажем, равную 100, тогда он работает. Также я до сих пор не понимаю, что вы предлагаете, я в настоящее время добавляю предварительно загруженную базу данных в проект и копирую в каталог документов программы (логика в моем постоянном методе хранения моего делегата приложения). Я не знаю, что мы еще на одной странице, спасибо за вашу помощь, пожалуйста, объясните, пожалуйста, свою мысль, если это необходимо, я очень люблю новую разработку iOS, поэтому, возможно, я чего-то не хватает. – JingJingTao

Смежные вопросы