Абстрактные объекты Parse?

Я хочу использовать Parse (parse.com) в своем приложении. Parse использует модели PFObject. Я бы хотел использовать свои собственные модели во всем моем коде (чтобы он не зависел от разбора). Если возможно, я бы хотел создать свое приложение, чтобы я мог заменить синтаксис другим облачным сервисом как можно более плавным, если захочу.

Это хорошая идея? Каков наилучший способ абстрагировать хранилище модели, чтобы в моем приложении не было (или минимальных) следов кода Parse?

Возможно, используйте шаблон дизайна адаптера для сопоставления объектов разбора с моими собственными объектами? Должен ли это быть независимым классом или частью логики модели?

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

Любые советы / мысли / комментарии?

    Я нашел относительно чистый способ справиться с этим.

    В принципе, я создал протокол под названием NPDictionaryRepresenting какие классы могут соответствовать, чтобы указать, как их следует преобразовать в словарь или инициализировать из словаря.

     @protocol NPDictionaryRepresenting <NSObject> - (NSDictionary *)dictionaryRepresentation; + (id)objectWithDictionaryRepresentation:(NSDictionary *)dictionary; @end 

    Каждая из моих моделей, которые мне нужны в Parse, будет соответствовать этому и реализовать свое собственное поведение. Этот протокол абстрагируется с помощью словарей, поэтому он никак не зависит от Parse.

    Затем я применил базовый класс NPNetworkAdapter для обработки всего сетевого хранилища. Я также внедрил класс NPParseNetworkAdapter, который наследуется от NPNetworkAdapter. Это единственный класс, который ничего не знает о Parse. Его интерфейс имеет дело с объектами, которые соответствуют NPDictionaryRepresenting. Сетевой адаптер разбора способен создавать PFObjects, извлекая словарные представления моих объектов. И наоборот, он может получать PFObjects и возвращать мои собственные модели, создавая их с помощью словарей.

    Недостатком этой реализации является то, что она не очень хорошо работает с объектными отношениями (но я над этим работаю).

    Если кто-нибудь будет комментировать этот подход, я бы хотел их услышать.

    Я понимаю, что это старый вопрос, но я занят работой над проектом, который представляет эту ту же проблему, поэтому я думал, что буду комментировать. Во-первых, я думаю, что вам удалось выявить это и попытаться избежать слишком сильного сочетания кода с Parse.

    Маршрут, который я решил принять, – использовать Protocols (интерфейсы) для моих классов моделей, причем базовая реализация – это объекты Parse – с использованием функции подкласса Parse ; Я объединил это с использованием фабричных классов, чтобы отделить создание объектов и особенности реализации от большинства моего кода приложения. Это может показаться излишним и требует немного дополнительного кода, но я полагаю, что он будет выплачивать дивиденды при тестировании, и если придет время изменить то, как я обращаюсь к внутренним службам.

    Другой альтернативой для меня было использование классов-оболочек, которые просто завернули PFObjects. Тем не менее, в моем случае классы-оболочки были бы просто тупыми классами делегирования без дополнительной поддержки Protocols для тестирования, поэтому я придерживался подхода к Protocols .

    Interesting Posts

    Каталог активов Xcode: только одна копия каждого изображения

    Поймать исключение из-за неверного ввода пользователя в swift

    Проверка приложения. Вы должны предоставить приложение для загрузки файлов с яблоком в хранилище приложений.

    UILabel с дескриптором жесты Tap не работает

    Родной компонент для «RCTFBLoginButton» не существует

    Testflight жалуется на сертификат разработчика, используемый для подписи приложения

    Просмотр видеороликов YouTube с YouTube iFrame

    Как получить уведомление, когда scrollToRowAtIndexPath завершает анимацию

    Рисование CIImage слишком медленное

    iPhone In-App Store Store Ошибка комплекта -1003 «Не удается подключиться к iTunes Store»

    Как определить архитектуру бинарного изображения во время выполнения?

    Есть ли способ изменить положение и размер UIPopoverPresentationController?

    Создайте приложение iPad, которое может отправлять / получать данные через USB-кабель?

    как изменить тестовые объявления на живые объявления в admob для ios swift

    iOS Сегодняшнее расширение виджета – анимация UISlider

    Давайте будем гением компьютера.