Хранение моего класса ObJ-C в Интернете. (веб-сервисы Amazon?)

Хорошо, это довольно широкий вопрос. Это мое первое приложение, и я не уверен, что это лучший способ сделать это. Приложение находится на IPHONE.

У меня есть курс «Ресторан». Ресторан имеет множество различных атрибутов и время работы. В настоящее время я храню ресторан в экземпляре nsdata (он соответствует NSCoding). Локальное хранилище легко, и я просто использую nsdata.

Я только что встроил функцию импорта/экспорта. Я хочу, чтобы эти два метода «опубликовали» ресторан в Интернете и «получили» ресторан из Интернета. Я знаю, что могу сделать это с помощью NSUrlConnection, и он у меня установлен и работает.

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

Вот о чем я сейчас думаю: создайте метод toString, который преобразует мой класс в текстовое представление. Затем сохраните строку на сервере. Это заменит хранение nsdata в сети. Это звучит уместно?

Тем не менее, я хочу иметь возможность запрашивать количество ресторанов и немного больше контролировать свою онлайн-базу данных. Является ли XML ответом? Я собирался начать изучать Amazon Web Services и изучать Json или Rest.

Какие-нибудь советы?

Спасибо

Дэн


person Dan Morgan    schedule 27.01.2009    source источник


Ответы (3)


Узнайте о REST, это самый простой и чистый способ предоставить веб-API. Некоторые фреймворки, такие как Ruby on Rails, предоставляют вам интерфейс REST прямо из коробки.

Затем вам нужно будет найти способ конвертировать ваши объекты на iPhone в удобный для REST формат. XML и JSON - оба варианта, но, к сожалению, я не видел никакого кода для преобразования в/из XML или JSON, который я действительно мог бы порекомендовать, так как я еще не пробовал. Но есть некоторые проекты, которые могут привести вас в правильном направлении. Вот один из самых перспективных:

http://github.com/yfactorial/objectiveresource/tree/master

person Community    schedule 27.01.2009

Я еще не очень хорошо знаком с разработкой для iPhone, но если есть достаточно простой способ использования веб-сервисов, я бы рекомендовал использовать его с типизированными параметрами. Это сделало бы эти службы более «пригодными для использования» и из других систем, им не нужно было бы знать, как сериализовать/упаковывать объекты в строку, а только как вызывать функцию: storeRestaurang (имя строки, рейтинг int...) и т. д.

Эту статью я проверю сам, так как надеюсь немного больше погрузиться в разработку для iPhone: soap-web-services/" rel="nofollow noreferrer">http://icodeblog.com/2008/11/03/iphone-programming-tutorial-intro-to-soap-web-services/

person Fredrik Jansson    schedule 27.01.2009

Похоже, вы хотите использовать plist. Любой из классов коллекции какао может быть записан в plist, который является разновидностью файла xml. Самое приятное то, что если вы используете стандартные классы ценности какао, вы можете записать коллекцию и прочитать ее позже.

Объекты NSString, NSNumber, NSDate, NSData, NSAray, NSDictionary могут быть помещены в коллекцию и сохранены непосредственно в plist. Другие классы должны быть сериализованы в NSData, а затем записаны на диск в виде plist. Для действительно пользовательских данных NSKeyedArchiver, вероятно, то, что вам нужно.

Для простых строковых и числовых данных упакуйте все это в NSDictionary, а затем запишите в plist. Теперь осмотритесь на своем Mac, и вы увидите, насколько популярны списки.

NSDictionary API - Хранение словарей

Руководство по программированию списка свойств

Руководство по программированию архивов и сериализаций для Cocoa

person Ryan Townshend    schedule 27.01.2009
comment
Спасибо за ответ Райан. Фантастический вклад. В настоящее время я использую nskeyedarchiver и nsdata для хранения своего ресторана. Я бы использовал plist, но в настоящее время у меня есть пользовательские классы, такие как «Ресторан» и «TimeEntry», переменные экземпляра этих классов являются только стандартными классами. - person Dan Morgan; 28.01.2009