Iphone 如何从NSData对象中获取值

Iphone 如何从NSData对象中获取值,iphone,ios,nsurlconnection,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 elsew

我向我的数据库发出一个请求,作为响应,我收到了一堆数据,我正在使用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变量的数据表示形式的前导值


我希望我有一些道理,如果你能提出一些建议或示例代码,这将是了不起的

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


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

你需要学习更多关于C中的指针。。。您可以使用[ReceivedData bytes]访问指向“是”的指针,并从中可以访问任何偏移量的任意大小的元素,或者可以将NSData转换为NSString。。。。顺便问一下,你的反应是什么???啊,对。。我正在考虑将其转换为字符串,但不确定其含义。我的回答是无符号32位整数和字符串的混合。每个值前面都有一个值编号,然后是字符串的长度(如果是字符串),然后是字符串或未签名的值。。这就是你的意思吗?是的,所以把它转换成NSString并做你想做的。。。这里面有什么问题?没问题,我想我只是不知道那是被人反对还是什么。。感觉不应该那么简单。。或者它可能会在内存分配方面做一些疯狂的事情。但是,既然我对此有一些明确的建议,听起来很好:P非常感谢:)太棒了!这听起来真像是我想做的事情。。我不确定您的最后一行是什么意思(请记住使用NSSwap…ToHost()宏系列将编码的数字转换为本机字节顺序。)如果您对此有任何帮助,但现在我将开始研究。:)非常感谢。@C.Johns我添加了关于字节顺序函数的更多信息。