我在使用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。
有没有人有这方面的经验?
答案 0 :(得分:1)
我花了几个小时调试这个确切的问题。
[rawOutput open];
来自Apple Notes: 必须先打开流才能使用它。
P.S。 - 他们如何设计一个必须在使用前打开的内存流。当您尝试写入未打开的流时,streamError属性为null。