2017-05-12 5 views
0

私は非常に混乱しています。私は少数のユーザーファイルを保存したいが、ドキュメントは保存しない。私は使用しています:iOSのライブラリディレクトリSwiftを使用

static var directory: URL { 
    get { 
     return FileManager.default.urls(for: .libraryDirectory, in: .userDomainMask)[0].appendingPathComponent("Caches").appendingPathComponent("OnlineFiles") 
    } 
} 

常に同じです。私はアプリを起動するたびに私は別のURLを取得します。 何か間違っていますか?私は設定する必要があるプロジェクトファイルにいくつかの魔法のスイッチがありますか?

それはのようなものだしたら:

ファイル:/// VAR /モバイル/コンテナ/データ/アプリケーション/ 4547EF22-EB33-4B65-9772-67ED7870E3E9 /ライブラリ/キャッシュ/ OnlineFiles

それはだ

その他の時間:

ファイル:/// VAR /モバイル/コンテナ/データ/アプリケーション/ 83C8CDD7-B4D0-48B2-8A8E-9BD48C5D1754 /ライブラリ/キャッシュ/ OnlineFiles

/Application /と/ Library /の間のこの文字列はランダムなようです。 2回目の起動時に後でアクセスできるときにファイルを1か所に保存する方法は?

[編集]:アプリを更新するたびに変更されないパスを取得するにはどうすればよいですか?

+1

コードは問題ありません。これは期待どおりに動作しています。なぜこれが問題なのですか? – rmaddy

+2

アプリケーションがアップデートされるたびに(Xcodeからアプリケーションを再インストールした場合も同様です)、別のディレクトリに保存されます。絶対URLは使用しないでください。 – Sulthan

+0

"/ Application /と/ Library /の間の文字列"は、アプリケーションUID – shallowThought

答えて

1

これはリンゴのセキュリティメカニズムです。あなたが他のプログラムへのアクセスを防止するためにAPPのApple Sandboxパスを暗号化するたびに。APP内の暗号化キーは、プログラムの終了前にAPPサンドボックスにアクセスするには、パスに戻ることは同じです。詳細は、appleのサンドボックスメカニズムを参照してください。

+0

それは良い説明ですが、答えはありません。回答はSulthanのコメントで提供されています。「絶対URLは使用しないでください。」常に使用してください:currentLibraryDirectory.appendingPathComponent(relativePath) –

関連する問題