2015-04-22 6 views
0

У меня был файл sqlite, который отлично работал на симуляторе и устройстве. Под моей папкой приложения на Mac, я также могу увидеть файл - coredata.sqlite.Файл sqlite получает симулятор xcode, но не ios-устройство

Я создал новый coredata.sqlite. После этого мне пришлось скопировать его на пути, которые были различны для разных целей (iphone 5 против 6 против 6+) и посмотрел вдоль линий:

.../Library/Developer/CoreSimulator/Devices/26292D7B-5001-497E-B23B-99455953F5F4/data/Containers/Data/Application/64849BCC-B86B-45DE-818F-3E67346C4893/Documents/ 

Просто скопировать над новым SQLite к приложениям папка, в которой присутствовал старый sqlite, не работала. Копирование его в вышеупомянутые папки фиксировало его для симулятора.

Теперь, когда я подключаюсь к устройству ios, он не может найти новый sqlite. Если я скопирую старый sqlite в папку приложений, он по-прежнему работает, но копирует новый в папку приложений, различные адресаты для симулятора и т. Д. Не влияют на устройство ios. Отображение пути, по которому он смотрит на шоу:

/var/mobile/Containers/Data/Application/80302FBA-6D45-4843-A891-E10A7ED4D445/Documents/CoreData.sqlite 

Любая помощь на котором устройство выбирая SQLite из? Так как он работает на симуляторе, а старший работает и на устройстве, код выглядит нормально. Что я могу сделать, чтобы заставить его выбрать мой новый sqlite?

+0

Я нашел проблему. Когда я копировал файл, он имел только rw persmissions, но не выполнялся. Изменение разрешений на rwx исправлено. Должен был сначала проверить, дух! Держать вопрос открытым, хотя, глядя на ответ Гэндальфа, кажется, есть правильный способ сделать это, которого я упустил. – peaxol

ответ

0

Устройство выберет файлы с mainBundle. Выполняя функциональность, связанную с базой данных, мы копируем файлы db из mainBundle в DocumentDirectory, чтобы он стал доступен для редактирования.

Что вы сделали, так это то, что вы вручную скопировали файл sqlite в папку документа данных приложения. Фактически вы должны добавить файл к определенной цели, а затем он скопирует файл во время процесса сборки.

Ваш новый файл coredata.sqlite не прикреплен ни к одной цели. Проверьте внутренние фазы сборки и посмотрите, есть ли она, иначе добавьте ее. Также у вас не должно быть двух файлов с одинаковым именем внутри пакета, поэтому удалите предыдущий файл из целевого объекта.

+0

Спасибо, что ответили. Предоставление разрешения на выполнение файла было исправлено, но, возможно, это был неверный путь. Где в настройках сборки я должен добавить его? Я удалил старый файл, нет дублирования. – peaxol

+0

Извините, я имел в виду _Build Phases_ not _Build Settings_. Нажмите на файл проекта (синий) внутри панели проекта (слева, где показаны файлы классов), затем нажмите на целевые объекты, затем вы увидите некоторые параметры вкладки, такие как Общие, Информация, Настройки сборки, Фазы сборки и т. Д. Проверьте внутри __Copy Bundle Resource Files__ – Gandalf

+1

Это сработало, спасибо за объяснение! – peaxol

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