Как мне прочитать в массиве php, в Objective-C? - PullRequest
1 голос
/ 19 марта 2009

В 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 - после POST у меня есть следующий код ...

NSURLResponse *newStr = [[NSURLResponse alloc] init];
NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:&newStr error:nil];

returnData равен литералу "Array", а не содержимому $ records []

Ответы [ 3 ]

2 голосов
/ 19 марта 2009

Вам нужно отформатировать ваш массив в некотором формате, который вы можете прочитать в Objective-C. Я рекомендую использовать JSON .

Если у вас PHP 5.2, вы можете использовать встроенные функции для кодирования ваших данных. Например:

echo json_encode($records);

На стороне Objective-C вы можете использовать TouchJSON для декодирования / кодирования JSON.

1 голос
/ 19 марта 2009

Вы должны сериализовать данные в формате XML plist, если можете, тогда они могут быть интерпретированы классами Какао, такими как NSArray и NSDictionary. NSPropertyListSerializer способен создавать изменяемые или неизменяемые массивы и словари из файла или из объекта NSData, содержащего сериализованные данные в формате plist.

NSDictionary также может читать файлы в этом формате:

"key" = "value";
"key2" = "value2";

Аналогично, NSArray может читать файлы в этом формате:

(
     "value1",
     "value2",
     "value3",
     "30",
     "value5"
);

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

Проверьте этот URL для получения дополнительной информации о списках свойств oldschool ASCII. Они доступны только для чтения, но с другой стороны, их достаточно просто генерировать вручную или систематически.

0 голосов
/ 19 марта 2009

На стороне PHP вам нужно сериализовать массив в формат, подобный JSON или XML, а не просто print. На стороне iPhone десериализовать объект NSData, используя соответствующую библиотеку

...