Приемущества CoreData и Realm перед .plist


#1

Требуется помощь опытного зала.

Вот у всех на устах CoraData и Realm и очень мало кто на формуме (ну судя по постам) юзает сохранение в простой файл .plist… В чём великая мощь нативного решения и стороннего фреймворка перед бедным файлом “ключ-значние”?

Я как-то привык к простому решению в виде .plist и не могу спрыгнуть с него ))) По началу, когда был больше копи-паст в коде, были проблемы с выпуском обновлений. Но когда голова заработала, то мне не составило труда сделать инициализатор, который принимает новые, добаленные значения, которых нет в старом файле, и не падает. Так проблема обновлений была решена и вообще не осталось ни одного стимула юзать объёмные CoraData, и простой Realm.

В чём великий смысл, кроме простого умения их поддерживать?
Ведь когда вам надо сделать функционал бэкапа в iCloud пользователя, вы будете туда копировать файл! Т.е. всё равно переведёте свои модели из БД в файл. Либо сохранить на свой сервак - тоже файл! Передать куда-то - файл!

Чем локальная БД с любой вложенностью с типами “ключ-значение”, которая не хранит самих файлов, лучше простого файла “ключ-значение”?

З.Ы.
Понятно, если вы конкретно нацелились на CloudKit и обмен данными между пользователями через этот сервис, то вам прямой путь к CoreData… Но если нет, то зачем???


#2

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

Плист же не так гибок и удобен для подобных вещей. Кстати, по скорочти чтения из плиста, он впереди коредата. Но отстает от рилма. В общем, все зависит от целей хранения и сложности хранения данных.


#3

Вот тут всё понятно. Спс. Значит с правильной стороны зашёл. Плиста хватит на ближайший год :smile:


#4

Для извлечения одного значения из вашего plist вам нужно прочитать весь файл, для изменения одного значения вам нужно переписать весь файл, если файл большой это займет много времени. Одна из задач которую решает БД, это писать/читать данные не все сразу, а небольшими частями.


#5

Тоже верно, что-то не подумал над этим ))) большой файл - это какой? 1000 записей? 10мБ?


Core Data или Plist для простых задач и хранения настроек?
#6

Если есть какой-то массив данных и предполагается что записи будут расти, то лучше уже на базу переходить. Если массив статичный, то можно вообще не париться, записать json и каждый раз его парсить при запуске.


#7

Записи могут расти. Но в каком объёме? Это всё абстракции для новичка. У новичка Структура в 10-50 параметров и в 10-1000 записей в файл с модели с его to-do list’ом? при самом отмороженном пользователе.

Я отлично понимаю, что БД главное и все с этим работают, и это надо знать. Но почему ни кто не говорит новичку, что для простых задач есть простое решение в 2 строки? При чём к этому решению нативно элементарно прикручивается бэкап в iCloud - это же вин-вин в плане простоты на первых шагах…

А что про скорость, то я про реал хочу знать: 1 000 записей? 10 000? Кто тестил или был опыт?
Единственно явное очевидное приемущество БД - это почленное извлечение в больших проектах. Но чтение файла даже в 1000 записей не велика проблема для современного процессора и флэш-памяти. А кто работает с более большими моделями, тот тут не сидит, кроме создателей )))

Вместо P.S.
Я к тому, то в рунете, и не только, везде шаблонные решения. Иван и Ко делают нечто больше. И всё это для начинающих и продожающих :wink: И тут форум как раз раскрывает проблемы новичков и их потребности:

  1. простое решение для сохранения моделей;
  2. простой бекап в iCloud - тут вообще ни кто помочь не мог на моё удивление. Начал сам разбираться и там всё не так сложно , просто надо пробовать )));
  3. правильная архитектура, хоть новички и сами этого не понимают;
  4. не просто сопособы передачи данны меджу VC но и их примущества и недостатки.
    5 и тп

Вот. я понял, чего не хватает ресурсу: какого-то общего курса в котором будет основные простые принципы работы, в котором первым делом объяснят, где ловить “Thread 1: signal SIGABRT” :smile: И это точно не претензия - ни кто не может знать, что там у других в голове. Но анализ форума, и частых вопросов поможет сделать иделальный курс первой ступени - некий FAQ. Ведь это самое сложное - освоить среду и не залезть в CoreData раньше времени, чтобы не отбить желание.

Что-то не то написал, ну да ладно )))


#8

Зависит от устройства, точне от скорости чтения/записи.

В любом случае переписывать весь файл каждый раз нецелесообразно.


#9

Ну понятно. Главное, основное понятно, а дальше по потребностям метод выбирать буду ))