Если ваш API веб-службы поддерживает JSON, используйте JSON.
Анализаторы JSON будут анализировать текст JSON (полученный в данных ответа от запроса) и «преобразовывать» его в соответствующую иерархию объектов Foundation - «представление». Это довольно легко выполнить, и это вопрос нескольких строк кода.
Из вашего описания сетевой код должен быть реализован через NSURLConnection
с использованием подхода делегата, который также является асинхронным. Вы должны использовать подход делегата, когда вам нужно настроить аутентификацию и обработку сертификатов.
Для умеренно больших наборов данных вы, безусловно, можете выбрать одну из жизнеспособных сторонних сетевых библиотек. Они также будут поддерживать настройку аутентификации и обработки сертификатов.
Что касается вашего вопроса, как обрабатывать данные:
После того, как у вас есть объект, представляющий Foundation свой ресурс - который может быть, например, пользователем, или список пользователей, и т.д., вы берете на этот объект Foundation и создавать или обновлять соответствующие «Модели». «Модели» - это представление ваших «данных», например, «Пользователь» или список «Пользователи», обычно это настраиваемый класс, возможно, управляемый основной объект.
Этот простой подход будет работать практически для всех случаев использования, когда данные «маленькие».
Когда дело доходит до «больших» наборов данных, этот подход больше не будет работать. Эмпирическое правило: объем памяти, выделенной для объектов Foundation, примерно в 5-8 раз превышает размер в байтах текста JSON. Например, для 30-мегабайтного JSON потребуется примерно 200 мегабайт для представления. Даже на современных устройствах это, вероятно, вызовет предупреждения о памяти, учитывая, что есть и другие распределения.
Решение для обработки «очень больших» наборов данных - это обработка данных в кусках. То есть, использовать много возможно отличается выделенный и специализированные «задачи», чья рабочая нагрузка требует только набор данных небольшой. Пусть эти задачи выполняются параллельно , где это возможно. (Мне нужно остановиться здесь;))
Для того, чтобы сохраняться ваши данные, вы можете напрямую использовать SQLite, или вы можете использовать Core Data - которая использует SQLite в качестве резервного хранилища.
Если вы просто хотите извлечь или вставить объекты из базы данных, которая представляет собой большой набор данных, вы можете использовать SQLite вместо использования Core Data для повышения производительности.
Вы хотите использовать основные данные, если у вас есть операции редактирования, создания, удаления, слияния и поиска для объектов «Модель», которые будут выполняться через пользовательский интерфейс пользователем или выполняться с помощью других задач, которые отображают результат в пользовательском интерфейсе.
Примечание: Основные данные не являются базой данных.
Одно слово в сетевых библиотеках третьих сторон:
Я не видел каких-либо еще, который обеспечивает гибкость, что я хотел бы иметь в определенных случаях использования. И что более важно, никто не «масштабируется». То есть, когда у вас есть большие наборы данных (> 10MByte), ваше приложение начинает становиться субоптимальным - производительность мудрая и относительно фальш-печати памяти. С большими и очень большими наборами данных ваше приложение может задохнуться.
Большинство этих библиотек будут накапливать все данные ответа в объекте NSMutableData
и не позволят вам легко обрабатывать полученные куски по мере их поступления. Обходной путь заключается в использовании временного файла, который требует дополнительного кода в вашем приложении. Обратите внимание, что вы можете получить предупреждения о памяти после попытки проанализировать 30-мегабайтный JSON-файл, который занимает 7 секунд для передачи по Wi-Fi.
Наличие наборов данных в диапазоне от нескольких мегабайт, однако, не является обычным случаем.
Посмотрите на RestKit и основные данные. – Wain
Да «JSON» - лучший подход с точки зрения ответа от сервера, и легко поддерживать массив вашего ответа и использовать его в соответствии с вашим требованием. –