0

アプリケーションドキュメントフォルダにアクセスするには、次のコードを使用します。

[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];

ただし、このフォルダにアクセスしたいのですが:

~/Library/Mobile Documents

パス値としてこれに簡単にアクセスするにはどうすればよいですか?同様の方法でこれを行うことはできますか?

4

3 に答える 3

1

定数を使用してシステム提供のディレクトリにアクセスする利点は、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ように見えるので、ハードコーディングのアプローチが唯一の選択肢かもしれません。

于 2012-11-29T22:22:11.257 に答える
1

モバイルドキュメントは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. "

http://developer.apple.com/library/ios/#documentation/DataManagement/Conceptual/DocumentBasedAppPGiOS/ManageDocumentLifeCycle/ManageDocumentLifeCycle.html

したがって、ユーザーがiCloudを選択した場合は、iCloudを使用する必要があります。

iCloudドキュメントモデルがどれくらい続くかは誰もが推測しているが、それが今日のやり方だ。あなたの質問に対するこの直接的な答えが示すように、全体が貧弱なUIデザインの傑作のようです。

 -(NSURL*)ubiquitousContainerURL {

     return [[NSFileManager defaultManager] URLForUbiquityContainerIdentifier:nil];

 } 
于 2012-11-29T22:34:31.177 に答える
0

最近のmacOSアプリでも、同じ必要がありました。iCloudディレクトリのルートフォルダにアクセスする方法です。

重要! アプリは自分だけを対象としているため、これはサンドボックス化されていないバージョン用に作成されています。Mac App Storeでアプリをリリースする予定の場合は、サンドボックスバージョンをオフにしないでください。

  1. アプリのエンタイトルメントファイルでサンドボックスをオフにします。
  2. このコードは、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)
    
于 2020-05-08T13:38:55.287 に答える