Всем привет! Кто работал с бд Realm, подскажите, можно ли в ней хранить .txt файлы и подтягивать их в приложение?
Подтягивать .txt файлы из базы Realm
Realm имеет тип Data, значит может хранить бинарники. По идее, если архивировать текстовый файл и после разархивировать, то можно писать его как бинарный тип в эту самую Data. Принцип похожий на хранение изображений в БД.
Но…
Реалм имеет ограничение на объем в поле базы данных. Порядка 6 мб, если память не изменяет. Проще работать с текстовым файлом так: записывать и читать тхт с диска, а в Реалм хранить просто ссылку на сам файл.
Штатных средств айос вполне достаточно для работы с текстовыми файлами
Вот нагуглил пример:
let fileName = "Test"
let dir = try? FileManager.default.url(for: .documentDirectory,
in: .userDomainMask, appropriateFor: nil, create: true)
// If the directory was found, we write a file to it and read it back
if let fileURL = dir?.appendingPathComponent(fileName).appendingPathExtension("txt") {
// Write to the file named Test
let outString = "Write this text to the file"
do {
try outString.write(to: fileURL, atomically: true, encoding: .utf8)
} catch {
print("Failed writing to URL: \(fileURL), Error: " + error.localizedDescription)
}
// Then reading it back from the file
var inString = ""
do {
inString = try String(contentsOf: fileURL)
} catch {
print("Failed reading from URL: \(fileURL), Error: " + error.localizedDescription)
}
print("Read from the file: \(inString)")
}
Спасибо за очень подробной ответ. Проблема в том, что я не хочу утяжелять приложение и хранить файлы на диске т.к. файлов будет много и в последующем объем будет расти. Точнее файлы рано или поздно появятся на диске, но пусть это произойдет по согласию пользователя на загрузку. Поэтому есть мысли вынести все на сторонний сервис.