在我的可可应用程序中,我具有将文件移动到某个目的地的功能。假设用户有一个文件 /Users/Josh/Desktop/my.zip。用户可以将此 my.zip 文件移动到另一个目的地,my.zip 将在桌面中消失。
在我的代码中,我使用了 replaceItemAtURL,因为目标文件夹也可能包含另一个 my.zip:
bMoveSuccess = [[NSFileManager defaultManager] replaceItemAtURL:destinationURL withItemAtURL:sourceURL backupItemName:nil options:0 resultingItemURL:&destinationURL error:&error];
如果我调用它来在同一个卷中移动文件,它可以工作,但是如果我调用它并将目标设置为不同的卷(即 USB 密钥),那么我会收到错误消息:
Error Domain=NSCocoaErrorDomain Code=512 "The file “my.zip” couldn’t be saved."
UserInfo=0x101b51840 {NSFileOriginalItemLocationKey=file://localhost/Volumes/USB/my.zip,
NSURL=file://localhost/Volumes/USB/my.zip,
NSFileNewItemLocationKey=file://localhost/Users/Josh/Desktop/my.zip,
NSUnderlyingError=0x101b2e3d0 "The operation couldn’t be completed. Cross-device link"}