iphone - 如何从 NSData 对象中获取值

标签 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 表示的每个代码段都有一个标识符值 1-无论什么......

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

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

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

我希望我说得有道理,如果您能够提出一些建议或示例代码,那就太棒了!

最佳答案

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

编辑:查找 NSSwapLittleIntToHost()NSSwapBigIntToHost() 的文档和 header 。这些是将外部二进制数表示形式转换为 native CPU 字节顺序的众多函数中的两个,反之亦然。

关于iphone - 如何从 NSData 对象中获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9492921/

相关文章:

ios - 点击段时停止 cellForRowAtIndexPath

ios - NSForegroundAttributeName 不工作。文本填充呈现透明

objective-c - 为什么要在这个语句中释放NSURLConnection实例呢?

iOS NSURL 字符串

iphone - 在设备上调试时 Xcode 的奇怪行为

ios - 使用带有完成处理程序的 NSURLConnection sendAsynchronousRequest 进行身份验证

ios - "Signing identity"和 "certificate"之间的区别?

iphone - viewDidLoad 和 init 在应用程序启动 iphone 时被调用

ios - iOS9.3 之后,我的 iPad 应用无法读取照片

iphone - 在 CALayer 的 mask 区域周围添加阴影