我想将文件从 iOS 11 文件应用程序复制到我的本地应用程序沙箱。出于测试目的,假设文件在文件应用程序中本地可用(从 iCloud 下载到本地存储)。文件扩展名已在我的应用程序中注册,当在 Files 应用程序中按下文件时,我的应用程序会从 Files 应用程序接收文件 URL:
NSFileCoordinator *fileCoordinator = [[NSFileCoordinator alloc] initWithFilePresenter:nil];
NSURL *nsUrl; // comes from Files app. For instance "file:///private/var/mobile/Library/Mobile%20Documents/com~apple~CloudDocs/test.rar"
NSURL *targetUrl; // file in my app's document directory
NSError *coordinatorError = nil;
[fileCoordinator coordinateReadingItemAtURL:nsUrl options:NSFileCoordinatorReadingWithoutChanges error:&coordinatorError byAccessor:^(NSURL *newURL)
{
NSFileManager *fileManager = [NSFileManager defaultManager];
//if ([fileManager fileExistsAtPath: [nsUrl path]])
{
NSLog(@"Copy from %@ to %@", newURL, targetUrl);
NSError *copyError = nil;
[fileManager copyItemAtURL:newURL toURL:targetUrl error:©Error];
if (!copyError)
{
// OK
}
else
{
NSLog(@"Files app error: %@", copyError);
}
}
}];
但操作失败,输出如下:
2017-11-22 09:30:28.685127+0100 test[434:40101] Copy from file:///private/var/mobile/Library/Mobile%20Documents/com~apple~CloudDocs/test.rar
to file:///var/mobile/Containers/Data/Application/01BB33E6-2790-0FD0-8270-000/Documents/test.rar
2017-11-22 09:30:28.687174+0100 test[434:40101] Files app error: Error Domain=NSCocoaErrorDomain Code=257 "The file “test.rar” couldn’t be
opened because you don’t have permission to view it."
UserInfo={NSFilePath=/private/var/mobile/Library/Mobile Documents/com~apple~CloudDocs/test.rar,
NSUnderlyingError=0x1c084abf0 {Error Domain=NSPOSIXErrorDomain Code=1 "Operation not permitted"}}
获得对外部文件的读取权限是否需要一些特殊的东西?
问候,