Создать NSArray с содержимым строки (MySQL)

0

Я хочу создать NSArray, ведьма содержит содержимое строки таблицы MySQL

Я использую php script для получения данных

$response = $bdd->query('SELECT * FROM iPhoneTests');


while ($datas = $response->fetch())
{
?>
    <array>
    <integer><?php echo $datas['Temperature']; ?></integer>
    </array>


<?php
}

и проверить этот код в моем приложении

    NSURL *getTemperature = [NSURL URLWithString:@"myURL..."];  
    NSError* error;
    temperature = [NSArray arrayWithContentsOfURL:getTemperature ];
    NSLog(@"%@",temperature);

Когда я тестирую в своем веб-браузере, я получаю все свои данные, но в своем приложении, в NSlog я получаю только первое значение.

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

Теги:
iphone
nsarray

2 ответа

4
Лучший ответ

Вы создаете массив для каждой строки (что, кстати, неверно, потому что эти массивы также должны быть вложены в массив).

Сделайте это следующим образом:

$response = $bdd->query('SELECT * FROM iPhoneTests');
?><array><?
while ($datas = $response->fetch())
{
?>
    <integer><?php echo $datas['Temperature']; ?></integer>
<?
}
?></array>
  • 0
    спасибо, таким образом я могу видеть все свои данные в моем массиве!
0

Мы можем общаться по-разному с сервером. И я бы предположил, что данные связи должны быть только в формате String, один из способов использует JSON, вы можете получить парсер JSON отсюда https://github.com/schwa/TouchJSON, это объясняется ниже:

  • Запуск связи

    [[[NSURLConnection alloc] initWithRequest: [Запрос NSURLRequestWithURL: [NSURL URLWithString: urlStr]] делегат: self startImmediately: YES] autorelease]; //urlStr - это NSString ref

  • Начало приема данных

    • (void) соединение: (NSURLConnection *) соединение сделалReceiveResponse: (NSURLResponse *) ответ { [receivedData setLength: 0]; } //receivedData - это NSMutableData ref
  • Получить данные в кусках

    • (void) соединение: (NSURLConnection *) подключение сделалReceiveData: (NSData *) данные { [receivedData appendData: data]; }
  • После получения полных данных

    • (void) connectionDidFinishLoading: (NSURLConnection *) соединение {

      //завершено восстановление данных json (полученные данные - NSMutableData) if (полученоData == nil || [receivedData length] == 0) { // обрабатывать ошибку при получении ответа, может быть нет сети   [self showAlertViewWithTitle: @ "Нет сети" и сообщение: @ "Не удалось открыть   страницы, потому что подключение к Интернету не найдено." andTag: 0];   вернуть; }

      NSString * responseBody = [[[NSString alloc] initWithData: receivedData кодирование: NSUTF8StringEncoding] autorelease]; ////NSLog (responseBody); NSError * jsonParsingError = [[[[NSError alloc] init] autorelease]; NSDictionary * jsonData = [Словарь NSDictionaryWithJSONData:                            [responseBody dataUsingEncoding: NSUTF8StringEncoding]                                Ошибка: & jsonParsingError];

      NSDictionary * serverError = [jsonData objectForKey: @ "error" ] == [NSNull null]?                              nil: [jsonData objectForKey: @ "error" ];

      if (serverError == nil || [serverError count] == ​​0) {   // ошибка не найдена   NSDictionary * response = [jsonData objectForKey: @ "response" ] == [NSNull null]?                              nil: [jsonData objectForKey: @ "response" ];   NSArray * array = [response objectForKey: @ "array" ] == [NSNull null]? Nil:                         [response objectForKey: @ "array" ]; // Я оставил код незавершенным, его просто для понимания

  • Проверить нулевые значения Никогда не забывайте проверять нулевые значения из данных JSON следующим образом:

    NSString * dataValue = [[[array objectAtIndex: i] objectForKey: @ "key" ] == [NSNull null]?                        @ "0": [[array objectAtIndex: i] objectForKey: @ "key" ] intValue];

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

  • 0
    Я думаю, что вы немного упустили момент. ciwol уже передает данные в виде строки, и, хотя он мог сделать выборку более эффективным способом обработки ошибок, он, очевидно, уже успешно подключился к своему серверу.
  • 0
    Прекрасно, я хотел показать ему более лучший способ получения данных с сервера, это поможет ему более правильно обрабатывать ошибки, если на сервере произойдет сбой или клиент не сможет правильно прочитать массив данных из-за несоответствия формата ...
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню