我正在使用多重连接来发送文件。当我发送它时,我以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];
...但有时应用程序崩溃,当我尝试发送更大的文件时会发生这种情况。我认为这是因为系统需要时间来写文件,无论如何,如果我需要再次“保存”文件,整个过程将需要更长的时间。是否有更快更安全的方式?