目标C中未读取Protobuf对象数据 [英] Protobuf object data not being read in Objective C

查看:53
本文介绍了目标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对象数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆