#objective-c #ruby-on-rails #ios #database #web
#objective-c #ruby-on-rails #iOS #База данных #веб
Вопрос:
Я полный новичок, когда дело доходит до подключения к веб-сайту iOS objective-c. Мне нужно, чтобы кто-нибудь указал мне правильное направление в том, как загружать / отправлять данные (т. Е. Сообщение) На веб-сайт, который мой друг запрограммировал на Ruby on Rails.
Веб-сайт использует сервисы Heroku и подключен к базе данных PostgreSQL.
Я нашел способ извлекать данные с сайта с помощью синтаксического анализатора JSON (SBJson) с помощью следующего кода:
SBJsonParser *parser = [[SBJsonParser alloc] init];
NSString *rawJSON = [[NSString alloc] initWithContentsOfURL:[NSURL URLWithString:aURL]];
anNSDictionaryObject = [[parser objectWithString:rawJSON error:nil] copy];
Я искал повсюду, но по какой-то причине не могу понять, как загружать данные. Нужно ли мне обращаться к базе данных напрямую? Нужно ли загружать данные в том же формате, в котором я их извлек?
Я не уверен, что предоставил достаточно информации, но буду признателен за любую помощь. Дайте мне знать, если потребуется дополнительная информация.
Комментарии:
1. У вас не должно быть прямого доступа к базе данных — это создает проблемы. Вместо этого все обновления должны запускаться через приложение RoR вашего друга, и, надеюсь, он сможет сообщить вам, какой API он предоставил для обновления данных в базе данных. (Возможно, потребовалась значительная доработка в приложении, которое будет отправлено вам, реляционные базы данных великолепны для многих вещей, но обычно программы, которые ими управляют, изменяют или повторно агрегируют данные по-своему.)
Ответ №1:
Сначала вы должны убедиться, что веб-служба предоставляет возможность создания или обновления объектов через API (вам никогда не понадобится прямой доступ к базе данных). Обычно в REST (и Rails) соглашение заключается в использовании POST для создания и PUT для обновлений. Например:
POST /user.json
{ user: { name: "...", email: "..." } }
Или:
PUT /users/:id.json
{ user: { name: "...", email: "..." } }
После того, как у вас есть эта настройка на вашем сервере, используйте свою библиотеку JSON для сериализации вашего объекта и библиотеку HTTP для выполнения post на вашем клиенте iOS. Я рекомендую JSONKit и HTTPRiot, поскольку они предоставляют простые средства для взаимодействия с серверами RESTful.
Ответ №2:
Ваш друг должен предоставить REST Api из приложения rails (если вы используете MVC и даже rails scaffolding, то они должны быть практически встроены в любом случае).
В приложении iOS вы, вероятно, захотите отправить асинхронный запрос, чтобы основной поток пользовательского интерфейса не блокировался. Вам нужно будет создать NSMutableURLRequest с данными post, а затем отправить данные с помощью NSURLConnection sendSynchronousRequest
Ответ №3:
Проверьте StorageRoomApp, у них отличный сервис и отличная поддержка. Приложение для хранения