我正在使用多点连接来发送文件。当我发送它时,我以 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];
最后我可以发送网址:
[session sendResourceAtURL:urlData withName:@"Resource" toPeer:peerID withCompletionHandler:nil];
对于第二个我做:
NSData* data = [NSData dataWithContentsOfURL:localURL options:NSDataReadingUncached error:&error];
...但有时应用程序会崩溃,当我尝试发送更大的文件时会发生这种情况。我认为这是因为系统需要时间来写入文件,无论如何,如果我需要再次“保存”文件,整个过程将花费更长的时间。有没有更快更安全的方法??