アプリケーションドキュメントフォルダにアクセスするには、次のコードを使用します。
[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
ただし、このフォルダにアクセスしたいのですが:
~/Library/Mobile Documents
パス値としてこれに簡単にアクセスするにはどうすればよいですか?同様の方法でこれを行うことはできますか?
アプリケーションドキュメントフォルダにアクセスするには、次のコードを使用します。
[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
ただし、このフォルダにアクセスしたいのですが:
~/Library/Mobile Documents
パス値としてこれに簡単にアクセスするにはどうすればよいですか?同様の方法でこれを行うことはできますか?
定数を使用してシステム提供のディレクトリにアクセスする利点は、Appleが構造を変更することを決定した場合でも、アプリケーションが機能することです。のようなものでのハードコーディング~/Library/Mobile Documents
は脆弱です。
NSSearchPathForDirectoriesInDomain
ただし、NSLibraryDirectory
定数を使用して同じものを使用してライブラリディレクトリにアクセスできます。次に、Mobile Documents
ディレクトリパスを追加するだけです。
// Set the NO to YES to get the full path, not the ~ version.
NSString *path = [NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, NO) lastObject];
path = [path stringByAppendingPathComponent:@"Mobile Documents"];
http://developer.apple.com/library/ios/#documentation/Cocoa/Reference/Foundation/Miscellaneous/Foundation_Constants/Reference/reference.html#//apple_ref/doc/c_ref/NSSearchPathDirectoryの定数値を見ると、ディレクトリに特定の定数がないMobile Documents
ように見えるので、ハードコーディングのアプローチが唯一の選択肢かもしれません。
モバイルドキュメントはiCloudドキュメントです。したがって、ドキュメントをiCloudに保存する必要があります。
OS Xでは間違いなく〜/ Library / Mobile Documents(10.7および10.8)にありますが、iOSでは見ないでください。
"All documents of an application are stored either in the local sandbox or in an iCloud container directory."...
"A user should not be able to select individual documents for storage in iCloud. "
したがって、ユーザーがiCloudを選択した場合は、iCloudを使用する必要があります。
iCloudドキュメントモデルがどれくらい続くかは誰もが推測しているが、それが今日のやり方だ。あなたの質問に対するこの直接的な答えが示すように、全体が貧弱なUIデザインの傑作のようです。
-(NSURL*)ubiquitousContainerURL {
return [[NSFileManager defaultManager] URLForUbiquityContainerIdentifier:nil];
}
最近のmacOSアプリでも、同じ必要がありました。iCloudディレクトリのルートフォルダにアクセスする方法です。
重要! アプリは自分だけを対象としているため、これはサンドボックス化されていないバージョン用に作成されています。Mac App Storeでアプリをリリースする予定の場合は、サンドボックスバージョンをオフにしないでください。
このコードは、iCloudルートフォルダにアクセスします。
let pathToiCloudFolder = NSString(string: "com~apple~CloudDocs").expandingTildeInPath
let backUpFolderUrl = FileManager.default.urls(for: .libraryDirectory, in:.userDomainMask).first!
let backupUrl = backUpFolderUrl.appendingPathComponent("Mobile Documents/" + pathToiCloudFolder)
print("Backup Folder:", backupUrl)