0

いくつかのデータをテキストファイルに書き込みたいのですが、bytesWrittenの値が-1であるため、常に「間違った」と表示されます。dataLengthとdataBytesの両方に問題がないことをデバッグしましたが、デスクトップにファイルを作成する権限があると思います。これを引き起こす理由は何ですか?どうすれば修正できますか?コードは次のとおりです。

void savedata(NSData *data)
{
    NSInteger       dataLength;
    const uint8_t * dataBytes;
    NSInteger       bytesWritten;
    NSInteger       bytesWrittenSoFar;
    dataLength = [data length];
    dataBytes  = [data bytes];

    NSOutputStream *fileStream = [NSOutputStream outputStreamToFileAtPath:@"~/Desktop/12.txt" append:NO];

    bytesWrittenSoFar = 0;
    do {
        bytesWritten = [fileStream write:&dataBytes[bytesWrittenSoFar] maxLength:dataLength - bytesWrittenSoFar];
        assert(bytesWritten != 0);
        if (bytesWritten == -1) {
            NSLog(@"Wrong!");
            break;
        } else {
            bytesWrittenSoFar += bytesWritten;
        }
    } while (bytesWrittenSoFar != dataLength);
}

int main(int argc, const char * argv[])
{
    @autoreleasepool {
NSData* data = [@"sadas" dataUsingEncoding:NSUTF8StringEncoding];

savedata(data);

return 0;
}
}
4

1 に答える 1

2

-openストリームに書き込む前に、ストリームを呼び出す必要があります。ドキュメントを読むと、ちょっとしたメモがあります。

討論

ストリームは、使用する前に開く必要があります。

将来的には、問題が発生したときに-streamStatusおよびメソッドを照会することで、より多くの情報を取得することもできます。-streamError

于 2012-05-03T08:55:23.053 に答える