Доброго времени суток. Подскажите, что за дичь творится? Делаю программу, где данные хранятся в Realm. Сам реалм-файл сформировал отдельно, потом скопировал его в корневой каталог своего проекта. Из туториала знаю, что его надо открывать в режиме read-only, типа так:
let config = Realm.Configuration(
fileURL: Bundle.main.url(forResource: "MyRealm", withExtension: "realm"),
readOnly: true)
let realm = try! Realm(configuration: config)
Но вот проблема - xcode в упор не видит файл “MyRealm.realm” в корневом каталоге. “fileURL” для него - nil и программа вываливается с ошибкой исполнения.
Я вынес “fileURL” в отдельную переменную, рядом просто для примера скопировал в корень еще файл “Стишки-порошки.rtf” и попробовал найти путь к ним обоим:
let url = Bundle.main.url(forResource: "Стишки-порошки", withExtension: "rtf")
print (url)
let url2 = Bundle.main.url(forResource: "MyRealm", withExtension: "realm")
print (url2)
В итоге xcode RTF-файл видит и печатает в консоли путь к нему, для realm - путь снова равен nil.
Для прикола переименовал realm файл в “х.х” - тоже не видит и путь nil, но зато как только переименовал в “х.rtf” - пусть сразу нашелся и в консоли пропечатался.
Как это вообще может быть? Надо где-то в настройках в xcode расширения файлов дополнительные прописывать, которые он не знает?
Сегодня сам нашел решение. Оказывается, что помимо того, что файл, который ты хочешь включить в проект, нужно перетащить в список файлов слева, нужно еще проследить, чтобы он отображался в разделе “Copy Bundle Resources” во вкладке “Build Phases” в настройках проекта. Когда туда зашел, то файл .rtf там отображался, а .realm - нет. Почему не знаю. Но после того, как я из левого списка файлов принудительно перетащил его в раздел “Copy Bundle Resources” жизнь сразу наладилась.
Всем хорошего кодинга )