Мы разработали RESTful API для нашего приложения Drupal, и в настоящее время в App Store есть приложение для iOS, использующее ASIHTTPRequest. для подключения к нему. Однако, как некоторые из вас, возможно, знают, он больше не поддерживается. Поэтому мы решили перейти на AFNetworking и хотели бы построить его таким образом, чтобы мы могли открыть его исходный код как библиотеку для использования с нашим API.
Наша текущая версия приложение использует CoreData и сохраняет все данные, поступающие в базу данных SQLite. Рабочий процесс на данный момент выглядит примерно так:
- Получить запрос
- Получить JSON
- Разобрать и сопоставить JSON с CoreData NSManagedObject
- Сохранить контекст
Просто чтобы дать приблизительный обзор:
У нас есть участники, группы, события, сообщения (в самом простом виде).
Я могу использовать несколько способов думал об этом:
Добавьте вызовы API AFNetworking и методы синтаксического анализа/сопоставления в NSManagedObject.
Мне нравится эта концепция, но я не конечно, если это имеет смысл. Основная схема данных затем становится схемой API, и это замечательно, но меня беспокоит: что, если другие разработчики, использующие ее, не захотят использовать основные данные в своем приложении? Кроме того, я не уверен, как это будет выглядеть с методами, возвращающими более одного экземпляра. Например, если у меня есть группа NSManagedObject, куда мне поместить вызов, чтобы получить индекс групп? Кроме того, привязываем ли мы кого-то к определенной базовой модели данных, и хорошо ли это?
Имейте отдельные объекты, которые умеют получать свои собственные данные из API, проанализировать его по своим собственным свойствам, а затем где-нибудь из общедоступной библиотеки выполнить сопоставление с объектами NSManaged.
Этот способ тоже звучит хорошо, но потом У меня есть очень похожие объекты с очень похожими свойствами.
Категории
Я читал здесь кое-что, где я могу использовать категорию для добавления методов
добавлять дополнительные свойства в NSManagedObject с помощью вторичного объекта . h .m файлы
Я не уверен, имеет ли это вообще смысл.
Класс API, основной класс данных и классы картографов.
Определенно грязно.
Предложения получше приветствуются!
Я пытался рассмотреть другие примеры, но не думаю, что у меня достаточно Objective-C. знания, необходимые для их правильного анализа.
Основные цели:
- Абстрагирование в библиотеку запросов, которую можно повторно использовать в другие приложения.
- Принудительное соблюдение схемы для объектов — это плюс
- Не привязывайте людей к модели CoreData и вообще не используйте CoreData, если они этого не хотят.
Подробнее здесь: https://stackoverflow.com/questions/121 ... a-rest-api
Мобильная версия