Как мне читать в php-массиве, в Objective-C?
-
20-08-2019 - |
Вопрос
В php у меня есть:
$result = mysql_query($query);
// if successful query, return the records
if ($result)
{
// if not empty result, return array of records
if (mysql_num_rows($result))
{
$records = array();
while ($row = mysql_fetch_assoc($result))
{
$records[] = $row;
}
return $records;
}
}
В Objective-C - После ПУБЛИКАЦИИ у меня есть следующий код...
NSURLResponse *newStr = [[NSURLResponse alloc] init];
NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:&newStr error:nil];
Возвращаемые данные равны литералу "Array", а не содержимому $records[]
Решение
Вы должны сериализовать данные в тип XML plist
форматируйте, если можете, тогда он может быть изначально интерпретирован классами Cocoa, такими как NSArray и NSDictionary.NSPropertyListSerializer способен создавать изменяемые или неизменяемые массивы и словари из файла или из объекта NSData, содержащего сериализованные данные в формате plist.
NSDictionary также может читать файлы в этом формате:
"key" = "value";
"key2" = "value2";
Аналогично, NSArray может считывать файлы в этом формате:
(
"value1",
"value2",
"value3",
"30",
"value5"
);
На самом деле, я думаю, что если строки не содержат пробелов, кавычки необязательны (но я предполагаю, что они принудительно вводят строковые типы).
Проверьте этот URL-АДРЕС для получения дополнительной информации о списках свойств oldschool ASCII.Они доступны только для чтения, но, опять же, их достаточно легко генерировать вручную или систематически.
Другие советы
Вам нужно отформатировать свой массив в некотором формате, который вы можете прочитать в Objective-C.Я рекомендую использовать JSON.
Если у вас есть PHP 5.2, вы можете использовать встроенные функции чтобы закодировать ваши данные.Например:
echo json_encode($records);
На стороне Objective-C вы можете использовать Сенсорный Json для декодирования /encode JSON.
На стороне PHP вам нужно сериализовать массив в формат, подобный JSON или XML, а не просто print
обрабатываю это.На стороне iPhone затем десериализовал бы NSData
объект, использующий соответствующую библиотеку