如何从NSData对象中获取值

时间:2012-02-29 02:49:23

标签: iphone ios nsurlconnection nsdata

我正在向我的数据库发出请求,作为回应,我收到了一堆数据,我正在使用NSURLConnection方法将其放入nsdata对象中。

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
    // Append the new data to receivedData.
    // receivedData is an instance variable declared elsewhere.
    [receivedData appendData:data];
}

NSData对象中的数据具有代码的每个部分的标识符值,由UInt16变量1表示 - 无论如何......

我想知道如何识别这些值然后开始解码数据。

我的计划是创建一个带有方法的类,我将数据从上面的方法传入。接收方法然后将数据包分开并且最有可能将每个部分传递给相应的方法,然后可以对其进行解码和/或对其进行检查等等。

我只是不确定如何识别那些作为UInt16变量数据表示的主要值。

我希望我有一些道理,如果你能够提出一些很棒的建议或示例代码!

1 个答案:

答案 0 :(得分:1)

鉴于数据的结构,您必须手动解析它。在循环中使用-[NSData getBytes:range:]来迭代数据并提取组件。请记住使用NSSwap...ToHost()系列宏将编码数字转换为本机字节顺序。

修改:查找NSSwapLittleIntToHost()NSSwapBigIntToHost()的文档和标题。这些是将外部二进制数表示转换为本机CPU字节顺序的许多函数中的两个,反之亦然。