Я хочу создать 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 я получаю только первое значение.
Я по этой проблеме, так как несколько раз, но я не могу добиться успеха Если кто-то увидит мою ошибку, скажите мне
Вы создаете массив для каждой строки (что, кстати, неверно, потому что эти массивы также должны быть вложены в массив).
Сделайте это следующим образом:
$response = $bdd->query('SELECT * FROM iPhoneTests');
?><array><?
while ($datas = $response->fetch())
{
?>
<integer><?php echo $datas['Temperature']; ?></integer>
<?
}
?></array>
Мы можем общаться по-разному с сервером. И я бы предположил, что данные связи должны быть только в формате String, один из способов использует JSON, вы можете получить парсер JSON отсюда https://github.com/schwa/TouchJSON, это объясняется ниже:
Запуск связи
[[[NSURLConnection alloc] initWithRequest: [Запрос NSURLRequestWithURL: [NSURL URLWithString: urlStr]] делегат: self startImmediately: YES] autorelease]; //urlStr - это NSString ref
Начало приема данных
Получить данные в кусках
После получения полных данных
(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];
Пожалуйста, дайте мне знать, если вам потребуются дополнительные разъяснения..