本文介绍了目标C中未读取Protobuf对象数据的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我使用metasyntactic类来处理目标C中的Google Protobuf对象。
在创建Protobuf对象并将其发送到服务器时,这会很好地工作。然而,我在读取从服务器发回的协议数据时遇到了问题,而我似乎无法解析这些数据。我在didReceiveData方法中使用以下代码:
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data{
UserId *identity = [UserId parseFromData:data];
NSLog(@"identity firstname = %@", identity.firstName);
}
NSLog不打印任何内容,我知道我在那里有数据,就像我对我获得的数据方法变量进行NSLOG一样-
<0a620a0d 12054c61 7572611a 04546573 74125108 dd4f1205 4c617572 611a0454 65737422 0a32322f 30382f32 3031322a 0032194c 61757261 2e466f72 72657374 40736973 706f7274 2e636f6d 3a0040ff ffffffff ffffffff 014a096c 61757261 74657374>
另外,当我在代码中创建一个Protobuf对象并访问它的数据属性-[ProtobufObject Data]时,我能够通过上面的方法提取信息,所以我假设它是我在解析数据时遗漏的东西!
非常感谢您的帮助!
推荐答案
您的代码可能存在的一个问题是,在一个连接期间可能会多次调用didReceiveData:
,因此收到的数据可能是不完整的Protobuf对象。
应将数据追加到NSMutableData
中的对象
didReceiveData:
,只解析connectionDidFinishLoading:
中采集的数据。
这篇关于目标C中未读取Protobuf对象数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!