2017-10-21 11 views
0

NSOpemPanelで指定したフォルダにファイルをコピーしたい。 ソースファイルはXMLから読み込み中で、NSTableに一覧表示されます。NSOpenPanelなしでサンドボックスにファイルをコピーしたい

copyItemAtPathでファイルをコピーできます。 しかし、私のアプリはサンドボックスに変わり、次にcopyItemAtURLでファイルをコピーできません。

ファイルをサンドボックスモードでコピーするにはどうすればよいですか?

私は多くの投稿を見ました。そして、Security-scoped Bookmarkがこれのための解決策かもしれないと私は思います。 しかし、パス内のXMLから "Security-scoped Bookmark"を作成することはできません(パスはNSURLに変換されました)。 私はsandbox.entitlementsに設定しましたが、この問題は明らかではありません。

これにはどんな方法がありますか?

macOS10.12とXcode8.3.3に私はサンドボックスモードでファイルをコピーするにはどうすればよい

おかげ

+0

「(パスの準備ができてNSURLに変換した)パス内のXMLから。 『セキュリティスコープのブックマークをどのように』しかし、私は作成できません」ん平均?セキュリティスコープのブックマークが何であるかを完全に理解しているようです。あなたがしようとしていることは、理にかなっていないいくつかの奇妙な英語の表現の上で不明です。あなたの作品を見せてください。 –

答えて

2

を開発したのですか?

あなたの現在のコードが何をしているかは不明ですが、サンドボックスの下のルールは単純です:あなたのアプリケーション(ライブラリフォルダの下に隠されている)アプリケーション自身のコンテナの外にあるファイルを読み書きするには

  • NSOpenPanelを使用して、ファイルパスのユーザーからURLを取得する必要があります。または
  • NSOpenPanelを使用して、ファイルの先祖フォルダーの1つのユーザーからURLを取得します。

第2のオプションは、すべてのサブフォルダを含むフォルダ全体にアクセスできます。すなわち、フォルダに根ざしたファイル/フォルダサブツリー全体が含まれる。

「一部のファイル」をコピーしたいので、フォルダのアクセス許可をユーザーに求めるのが適切です。 NSOpenPanelを「要求の許可」ダイアログにカスタマイズすることができます。特定のフォルダを要求している場合は、フォルダを含むフォルダにダイアログを開いて、特定のフォルダのみをユーザが選択できるようにすることもできます。

NSOpenPanelからフォルダのURLを取得したら、セキュリティスコープのブックマークを作成して、アプリの設定やその他の設定ファイル(アプリのコンテナに保存)に保存できます。こうすることで、アプリケーションには、ユーザに再度尋ねることなく、後で実行されたときにフォルダにアクセスできるようになります。

この問題を調査していくつかのコードを書いた後で、新しい質問をしたり、コードを示したり、問題を説明したりすることができます。誰かが間違いなく次のステップであなたを助けます。

HTH

関連する問題