Это зависит от того, какие данные вы хотите сохранить и будете ли вы использовать его только внутри страны, или вам необходимо обмениваться данными с внешней службой.
NSCoding, как правило, является сериализатором данных. Множество встроенных объектов реализует протокол NSCoder, который позволяет сохранять их как двоичный поток (файл, в BLOB sqlite и т. Д.). NSKeyedArchiver дает вам возможность поиска в таких потоках на основе строковой метки , немного похоже на словарь, но вы можете использовать только строки в качестве ключей. Этот подход хорош, если вам иногда приходится упорствовать над некоторыми объектами разных классов.
Однако если у вас есть много объектов же класса, вы будете лучше пойти на базе данных, подход, SQLite или CoreData. CoreData - это практически оболочка SQLite, которая упрощает проектирование вашей модели данных и выполняет запросы к БД за шторами, не требуя написания операторов SQL. В CoreData вы определяете свои классы, и каждый экземпляр класса может сохраняться, т. Е. Вы можете вернуть значения членов объекта, не имея их всегда в памяти. Это очень удобный способ хранения множества структурированных данных. Например, если вы напишете веб-браузер, вы можете сохранить закладки пользователя с именем, URL-адресом и, возможно, последним посещенным временем.
Для XML и JSON нет особых преимуществ, если вы используете данные только локально на устройстве. Если вам нужно связаться с какой-либо внешней службой, вы можете рассмотреть возможность кэширования/сохранения объектов XML/JSON, как они предназначены для последующего использования. Другим подходом было бы восстановление этих данных из ваших внутренних структур данных (см. Выше) каждый раз, когда вам это нужно.
Если вы сами проектируете свою модель данных, я вижу еще меньше смысла использовать плиты, но, возможно, кто-то меня исправит.
EDIT: Я добавлю ссылку на короткую ссылку для учебных пособий о том, как использовать NSCoding, Core Data и в качестве бонуса SQLite.
ОБНОВЛЕНИЕ 12.01.2016: Если вы ищете решения настойчивости, я предлагаю вам также ознакомиться с Realm.
Возможные дубликаты: http://stackoverflow.com/questions/4989609 http://stackoverflow.com/questions/840634 –
вещь sqlite считается внутри coredata. И первая ссылка, которую вы предложили, говорит о специфическом sqlite3 vs nscoding; с небольшим количеством ответов. Я задаю более общие вопросы. Почему существует так много вариантов обработки данных. – LolaRun