Ответ 1
Это зависит от того, какой тип данных вы хотите сохранить, и будете ли вы использовать его только внутренне, или вам необходимо обмениваться данными с внешней службой.
NSCoding, вообще говоря, является сериализатором данных. Множество встроенных объектов реализует протокол NSCoder, который позволяет сохранять их как двоичный поток (файл, в BLOB sqlite и т.д.). NSKeyedArchiver дает вам возможность поиска в таких потоках на основе строковой метки, немного похоже на словарь, но вы можете использовать только строки в качестве ключей. Этот подход хорош, если вам иногда приходится упорствовать в некоторых объектах разных классов.
Однако, если у вас много объектов одного и того же класса, вам лучше перейти на подход базы данных, SQLite или CoreData. CoreData - это практически оболочка SQLite, которая упрощает проектирование вашей модели данных и выполняет запросы к БД за шторами, не требуя написания операторов SQL. В CoreData вы определяете свои классы, и каждый экземпляр класса может сохраняться, т.е. Вы можете вернуть значения членов объекта, не имея их всегда в памяти. Это очень удобный способ хранения множества структурированных данных. Например, если вы напишете веб-браузер, вы можете сохранить закладки пользователя с именем, URL-адресом и, возможно, последним посещенным временем.
Для XML и JSON нет особых преимуществ, если вы используете данные только локально на устройстве. Если вам нужно связаться с какой-либо внешней службой, вы можете рассмотреть возможность кэширования/сохранения объектов XML/JSON, как они предназначены для последующего использования. Другим подходом было бы восстановление этих данных из ваших внутренних структур данных (см. Выше) каждый раз, когда вам это нужно.
Если вы сами создаете свою модель данных, я вижу еще меньше смысла использовать плиты, но, возможно, кто-то меня поправит.
EDIT: я добавлю ссылку на короткую ссылку для учебных пособий о том, как использовать NSCoding, Основные данные и в качестве бонуса SQLite.
ОБНОВЛЕНИЕ 12.01.2016: Если вы ищете решения настойчивости, я предлагаю вам также проверить Realm.