Helpers - компьютеры, интернет, программирование

Разработка приложения iOS с бэкэндом API REST (с поддержкой данных)

Я разрабатываю приложение для iPad, которое подключено к серверу Django на бэкэнде. Сервер в основном представляет собой просто REST API поверх базы данных (это делается с помощью TastyPi, для записи).

Я пытаюсь понять, как лучше всего это разработать, так как я новичок в iOS.

Итак, несколько сопутствующих вопросов:

  1. Существует ли библиотека, упрощающая работу по созданию «моделей» в вашем коде, отражающих модели на сервере?

Я бы представил что-то вроде Django ORM, которое позволяет вам определять объекты в Objective C, которые сопоставляются 1-к-1 с объектами, которые дает вам REST API.

Эта библиотека может абстрагироваться от всего кэширования и преобразования между локальными объектами и объектами на сервере.

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

Короче говоря, где я могу научиться «правильному» способу кодирования приложений iOS, поддерживаемых REST API, предоставляющим доступ к базе данных? Предпочтительно учебник, а не просмотр кода существующих проектов.


  • посетите мой ответ, я просто делаю restfull веб-службу, вызываемую с использованием этого кода #12584067" title="ошибка синтаксического анализа xml при использовании инфраструктуры wcf для веб-сервисов"> stackoverflow.com/questions/12583667/ 24.10.2012

Ответы:


1

1) Для ORM в iOS есть Core Data, который позволяет вам создавать свою сущность и работать с объектами, а не с операторами SQL, такими как SELECT, LEFT JOIN и т. д.

Не знаю, как другие, но я обычно делаю так:

1) Приложение отправляет HTTP-запрос POST к веб-службе, используя библиотеку, например библиотеку ASIHttpRequest. (Обратите внимание, что для серверной части я написал свой веб-сервис с использованием веб-фреймворка Symfony)

2) Приложение отправляет ответ JSON.

e.g.

{ данные { имя: Боб возраст: 20 } }

3) Проанализируйте JSON с помощью анализатора JSON, такого как JSONKit или предоставленного ASIHttpRequest, и преобразуйте ответ сервера JSON в NSDictionary.

NSDictionary *data = [[request responseString] objectFromJSONString];

4) Теперь, хранить данные в приложении или нет, зависит от характера приложения. Если приложение должно выполнять поиск местных ресторанов, то вам, вероятно, не нужно сохранять локальную копию возвращаемого результата, поскольку природа приложения заключается в поиске ресторанов.

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

Здесь вступают в действие Core Data: вы строите свою модель, которая копирует модель сервера, и выполняете простое сопоставление 1 к 1 между моделями сервера и клиента.

Надеюсь, это поможет.

24.10.2012

2

Ознакомьтесь с комплектом для отдыха.

RestKit — это платформа Objective-C для iOS, цель которой — сделать взаимодействие с веб-сервисами RESTful простым, быстрым и увлекательным. Он сочетает в себе простой и понятный API HTTP-запросов/ответов с мощной системой сопоставления объектов, которая сокращает объем кода, который необходимо написать для достижения цели.

Он также поддерживает сохранение удаленно загруженных объектов непосредственно обратно в локальное хранилище.

24.10.2012
  • Неверный набор Res t в вашей ссылке ;) 24.10.2012

  • 3

    Parse.com API поддерживает RESTful и берет на себя миллион часов создания стандартного кода для базы данных. Я у них не работаю, но сервис мне нравится.

    24.10.2012

    4

    Для № 1 helios.io помогает. Из документов на github,

    Чтобы синхронизировать вашу модель данных и веб-сервисы REST, вы можете связать ее с вашим приложением helios:

    $ helios link path/to/DataModel.xcdatamodel

    Это создает жесткую связь между файлом модели данных в ваших проектах Xcode и Helios — любые изменения, внесенные в любой файл, повлияют на оба. При следующем запуске сервера Helios автоматически перенесет базу данных для создания таблиц и вставки столбцов для размещения любых новых сущностей или атрибутов.

    27.10.2014
    Новые материалы

    Интуитивное понимание тензоров в машинном обучении
    Тензор является важной концепцией во многих научных областях, таких как математика, физика, обработка сигналов и компьютерное зрение, и это лишь некоторые из них. В математике тензор — это..

    Использование машинного обучения для диагностики болезни Альцгеймера, часть 4
    Маркеры семантической согласованности для ранней диагностики болезни Альцгеймера (arXiv) Автор: Давиде Колла , Маттео Дельсанто , Марко Агосто , Бенедетто Витиелло , Даниэле Паоло Радичони..

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

    Анимированный математический анализ
    Использование Manim для создания математических анимированных визуализаций Визуализация данных помогает понять скрытые закономерности в данных, которые невозможно визуализировать..

    Создание простого слайдера изображений с помощью JavaScript
    Узнайте, как создать базовый слайдер изображений с помощью HTML, CSS и JavaScript. Введение В этом уроке мы создадим удобный слайдер изображений, используя JavaScript, HTML и CSS. Ползунок..

    Создание базы данных с помощью супергероя «Python»
    В этом посте мы узнаем, как создать «базу данных SQLite с помощью модуля python sqlite3, создав простую функцию входа и регистрации. Готовы ли вы к этому путешествию? Если да , давайте приступим..

    ИИ для чайников: руководство для начинающих по пониманию будущего технологий
    Вы чувствуете, что остались позади в мире ИИ? Не волнуйтесь, вы не одиноки! Со всей этой шумихой вокруг искусственного интеллекта может быть трудно понять, с чего начать. Но не позволяйте сленгу..