【问题标题】:How do I read in a php array, in Objective-C?如何在 Objective-C 中读取 php 数组?
【发布时间】:2009-03-19 04:23:11
【问题描述】:

在 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 等于文字“数组”,而不是 $records[] 的内容

【问题讨论】:

    标签: php objective-c associative-array


    【解决方案1】:

    您需要以某种可以在 Objective-C 中读取的格式来格式化您的数组。我推荐使用JSON

    如果您有 PHP 5.2,则可以使用 the built in functions 对数据进行编码。例如:

    echo json_encode($records);
    

    在 Objective-C 端,您可以使用TouchJSON 来解码/编码 JSON。

    【讨论】:

    • 不幸的是,我被 php 版本 4.4.9 卡住了
    【解决方案2】:

    如果可以,您应该将数据序列化为 XML 类型 plist 格式,然后它可以被 NSArray 和 NSDictionary 等 Cocoa 类本地解释。 NSPropertyListSerializer 能够从文件或包含 plist 格式的序列化数据的 NSData 对象生成可变或不可变数组和字典。

    NSDictionary 也可以读取这种格式的文件:

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

    同样,NSArray 可以读取这种格式的文件:

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

    事实上,我认为如果字符串不包含空格,引号是可选的(但我猜它们会强制字符串类型)。

    查看this URL 了解有关老式 ASCII 属性列表的更多信息。它们是只读的,但它们很容易手动或系统地生成。

    【讨论】:

    • 所有好的回应。 Dreamlax,好主意。现在这对我来说更有意义了,特别是因为我不熟悉 JSON。谢谢!
    【解决方案3】:

    在 PHP 方面,您需要将数组序列化为 JSON 或 XML 等格式,而不仅仅是 printing 它。然后在 iPhone 端使用适当的库反序列化 NSData 对象

    【讨论】:

    • 感谢您的反馈。我使用的是不支持 JSON 的 php 版本 4.4.9,所以我使用了 XML。感谢您的回答。
    猜你喜欢
    • 1970-01-01
    • 2014-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-21
    • 1970-01-01
    相关资源
    最近更新 更多