いくつかのデータをテキストファイルに書き込みたいのですが、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;
}
}