3

我正在使用多点连接来发送文件。当我发送它时,我以 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];

...但有时应用程序会崩溃,当我尝试发送更大的文件时会发生这种情况。我认为这是因为系统需要时间来写入文件,无论如何,如果我需要再次“保存”文件,整个过程将花费更长的时间。有没有更快更安全的方法??

4

0 回答 0