1
iOS 11のファイルアプリからローカルアプリのサンドボックスにファイルをコピーしたいとします。テスト目的のために、ファイルがファイルアプリ(iCloudからローカルストレージにダウンロード)でローカルに利用可能であると仮定します。ファイルの拡張子は、私のアプリに登録され、ファイルがファイルアプリケーションに押されたときに私のアプリは、ファイルアプリからファイルのURLを受信します。ファイルをiOS 11からファイルをサンドボックスにコピー
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"}}
外部ファイルへの読み取りアクセスを得るために特別なものがありますか?
よろしく、
? – Matt
'' coordinateReadingItemAtURL''ブロック内に置くことができます。終了したら、 '' stopAccessingSecurityScopedResource ''を呼び出すことを忘れないでください。 – Hyndrix
あなたの答えをより明確にしてください。 – Matt