目标C中未读取Protobuf对象数据

Protobuf object data not being read in Objective C(目标C中未读取Protobuf对象数据)
本文介绍了目标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对象数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

How to stop UIBarButtonItem text from truncating?(如何阻止UIBarButtonItem文本被截断?)
java.lang.IllegalStateException: SimpleTypeImpl should not be created for error type(异常:不应为错误类型创建SimpleTypeImpl)
Android IllegalArgumentException: The tag for fragment_XXX is invalid. Received: layout-sw600dp/fragment_XXX_0(Android IlLegalArgumentException:Fragment_XXX的标签无效。收到:Layout-sw600dp/Fragment_XXX_0)
NSURLSessionTaskPriority seems to be ignored?(NSURLSessionTaskPriority似乎被忽略了?)
How to make dataWithEPSInsideRect vector rather than bitmap in vector format?(如何用EPSInside Rect将dataWithEPSInside Rect变成矢量而不是位图的矢量格式?)
HTTPS request using volley(使用 volley 的 HTTPS 请求)