Как опубликовать объект json в Xcode 4?

#ios #ios4 #xcode4

#iOS #ios4 #xcode4

Вопрос:

я получаю свой объект json, используя асинхронное соединение nsurl как {"firstname":"A","Contact":{"phone":1234567899,"email":"abc@yahoo.com"}}

Я хочу знать, что если я изменю значение своего номера телефона, а затем захочу загрузить его обратно, как я могу это сделать. Должны ли мы отправлять только пару ключ-значение для телефона или всего объекта {«firstname»: «A», «Contact»:{«phone»: 1234567899, «email»:»abc@yahoo.com «}} с обновленным номером телефона на сервер для обновления в базе данных.

 NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init]; [request setURL:myUrl];
[request setHTTPMethod:@"POST"];
[request setValue:@"text/plain" forHTTPHeaderField:@"Content-Type"];
[request setHTTPBody:stringInNSData]; 
  

Я нашел вышеупомянутую логику почти везде, но не знаю, как реализовать и где реализовать.

Ответ №1:

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

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

 NSURLConnection *urlConnection = [NSURLConnection connectionWithRequest:request delegate:self];
  

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

 Connection Data and Responses
– connection:didSendBodyData:totalBytesWritten:totalBytesExpectedToWrite:  delegate method Available in iOS 3.0 through iOS 4.3
– connection:didReceiveData:  delegate method Available in iOS 2.0 through iOS 4.3
– connection:didReceiveResponse:  delegate method Available in iOS 2.0 through iOS 4.3
– connection:willCacheResponse:  delegate method Available in iOS 2.0 through iOS 4.3
– connection:willSendRequest:redirectResponse:  delegate method Available in iOS 2.0 through iOS 4.3
Connection Completion
– connection:didFailWithError:  delegate method Available in iOS 2.0 through iOS 4.3
– connectionDidFinishLoading:  delegate method Available in iOS 2.0 through iOS 4.3
  

Комментарии:

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

2. Я получил это в viewDidLoad -> myTableViewTwo = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, 320, 460) style: UITableViewStylePlain]; myTableViewTwo.DataSource = self; myTableViewTwo.delegate = self; [self.view addSubview: myTableViewTwo];

3. и и — (CGFloat)TableView:(UITableView *)TableView height forrowatindexpath:(NSIndexPath *)indexPath { jsonDetailData = [responseString JsonValue]; CGSize size = [[jsonDetailData objectAtIndex:indexPath.row] Размер с расширением:[UIFont systemFontOfSize:14] Ограниченный размер: CGSizeMake(300,500)]; возвращаемый размер.высота 10; }

4. Но я получаю «SIGABRT» в «constrainedToSize: CGSizeMake (300,500)» с журналом ошибок в консоли == -[__NSCFDictionary objectAtIndex:]: нераспознанный селектор, отправленный экземпляру 0x4c79540 2011-11-05 10:25: 29.396 InstructorReview[851: bc03] *** Завершение работы приложения из-за неперехваченного исключения ‘NSInvalidArgumentException ‘, причина: ‘-[__NSCFDictionary objectAtIndex:]: нераспознанный селектор, отправленный экземпляру 0x4c79540’

5. Ваш объект jsonDetailData на самом деле является словарем. [__NSCFDictionary objectAtIndex:] вызывает исключение. Прежде чем перейти к дальнейшему отображению данных, вам следует поиграть с инструкциями журнала и посмотреть, как получить доступ ко всем данным, которые возвращаются из строки json. Кроме того, вы должны задавать новые вопросы, а не начинать новый вопрос в изменении комментария. Было бы нормально, если бы это было связано с ответом на первый вопрос.