0

我使用元语法类来处理 Objective C 中的 Google Protobuf 对象。

这在制作 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] 我能够通过上述方法提取信息,所以我认为这是我在解析数据时缺少的东西!

非常感谢任何帮助!

4

1 回答 1

0

您的代码的一个可能问题是didReceiveData:在一个连接期间可以多次调用,因此接收到的数据可能是不完整的Protobuf 对象。

您应该将数据附加到 中的NSMutableData对象 didReceiveData:,并且仅解析 中收集的数据connectionDidFinishLoading:

于 2013-09-05T11:00:00.673 回答