マルチピア接続を使用してファイルを送信しています。私がそれを送信するとき、私はそれを NSData の形式で持っていますが、メソッドには NSUrl が必要であり、ファイルを受信するときも同じです。デバイスは NSUrl を受け取り、それを NSData に変換する必要があります。そう:
NSdata => NSUrl ........ NSUrl => NSData
最初の(NSDataからNSUrlへ)私はこれを試しました:
1)
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *filePath = [documentsDirectory stringByAppendingPathComponent:@"sendData.xxxxxxx"];
[myData writeToFile:filePath atomically:YES];
NSURL *urlData = [NSURL fileURLWithPath:filePath];
NSProgress *progress = [session sendResourceAtURL:urlData withName:@"Resource" toPeer:peerID withCompletionHandler:nil];
2)
NSURL* fileURL = [[NSURL alloc] init];
[myData writeToURL:fileURL atomically:YES];
最後に、URL を送信できます。
[session sendResourceAtURL:urlData withName:@"Resource" toPeer:peerID withCompletionHandler:nil];
2番目に私は:
NSData* data = [NSData dataWithContentsOfURL:localURL options:NSDataReadingUncached error:&error];
...しかし、大きなファイルを送信しようとすると、アプリがクラッシュすることがあります。これは、システムがファイルへの書き込みに時間がかかるためだと思いますが、ファイルを再度「保存」する必要がある場合は、とにかくプロセス全体に時間がかかります。より速く、より安全な方法はありますか??