2011-07-22 12 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 byteswrite:maxLength:方法ドキュメントから-1バイトを与えるNSOutputStream?

+0

@anon:私はObjective-Cの新人ですか?私よりも悪い? :D NSIntegerはオブジェクトではないので、NSLogでオブジェクト指定子を使用することはできません。 ;) – lolwut

+0

私は他の理由で間違っていましたが、あなたは私が言ったことをすることができます。しかし、やはり 'NSInteger'は私が言ったところでポインタにする必要があります。 – Dair

答えて

3

戻り値
実際に書き込まれたバイト数、またはエラーが発生した場合は-1。エラーの詳細については、streamErrorを参照してください。受信機が固定長ストリームで容量に達した場合は、0が返されます。

-1の戻り値は、エラーが発生したことを意味します。 [outStream streamError]を使用して、何がうまくいかなかったかを示すNSErrorオブジェクトを取得して、それを修正しようとするか、ユーザーの問題の説明を取得する必要があります。

+0

ニース。私はそれが働くなら明日受け入れます。ありがとう。 – lolwut

関連する問題