写入Protobuf CodedOutputStream

时间:2013-04-24 17:48:57

标签: objective-c protocol-buffers

我在使用Protobuf的Objective-C端口写入CodedOutput流时遇到问题:

    POPMessage_Builder* builder = [[POPMessage_Builder alloc] init];
    [builder setPayload:@"Hello, world!"];
    POPMessage* message = [builder build];

    NSOutputStream* rawOutput = [NSOutputStream outputStreamToMemory];

    PBCodedOutputStream* os = [PBCodedOutputStream streamWithOutputStream:rawOutput];
    [message writeToCodedOutputStream:os];
    [os flush];

    NSData* data = [rawOutput propertyForKey:NSStreamDataWrittenToMemoryStreamKey];

    NSLog(@"%@", data);

最后,数据始终为空。我尝试过写各种各样的东西,但似乎PBCodedOutputStream似乎永远不会写入nsoutputstream。

有没有人有这方面的经验?

1 个答案:

答案 0 :(得分:1)

我花了几个小时调试这个确切的问题。

[rawOutput open];

来自Apple Notes: 必须先打开流才能使用它。

P.S。 - 他们如何设计一个必须在使用前打开的内存流。当您尝试写入未打开的流时,streamError属性为null。