2013-04-24 16 views
0

我在使用的Protobuf的Objective-C的端口寫入CodedOutput流問題:寫入的Protobuf CodedOutputStream

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

我剛花了幾個小時來調試這個確切的問題。

[rawOutput open]; 

從蘋果注: 才能使用它的流必須打開。

P.S. - 他們對設計內存流有多大幫助,在使用之前必須打開它。當您嘗試寫入未打開的流時,streamError屬性爲空。