2011-07-22 56 views
0
NSDictionary *bundle = [NSDictionary dictionaryWithObjectsAndKeys:message,@"message", toUserName, @"receiver",fromUserName, @"sender", nil]; 
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:bundle];   
NSOutputStream *outStream; 
[toUser getInputStream:nil outputStream:&outStream]; 
[outStream open]; 
NSInteger bytes = [outStream write:[data bytes] maxLength: [data length]]; 
[outStream close]; 

success = YES; 
NSLog(@"Wrote %ld bytes", bytes); 

我得到:Wrote -1 bytesNSOutputStream給-1字節?

+0

@anon:親愛的我,你是新來的Objective-C嗎?比我更糟? :D NSInteger不是一個對象,所以你不能在NSLog中使用對象說明符。 ;) – lolwut

+0

我錯了,因爲其他原因,但你可以做我說的。但是,那麼'NSInteger'也必須成爲我所說的指針。 – Dair

回答

3

write:maxLength:方法文檔:

返回值
實際寫入的字節數,或者如果發生錯誤-1。有關錯誤的更多信息可以通過streamError獲得。如果接收方是固定長度的流並且已達到其容量,則返回0。

-1返回值表示發生錯誤。您應該使用[outStream streamError]來獲取NSError對象,告訴您哪裏出了問題,以便您可以嘗試修復它,或者獲取用戶的問題描述。

+0

不錯。如果它有效,我明天就會接受它。謝謝。 – lolwut

相關問題