3

OS X アプリでサンドボックス化を有効にしてアプリ ストアに再送信し、アプリが変更権限を持つリソースのみをユーザーが選択できるようにする最もエレガントな方法を見つけようとしています。

簡略化されたシナリオ:

  1. ユーザーは、ファイル システムで画像を選択します。NSOpenPanel
  2. ユーザーがProcess Pictureアプリのボタンをクリックする
  3. アプリはインターネットから情報を取得します
  4. アプリは画像のメタデータを変更します。

ユーザーが写真の選択を完了したら、それぞれが写真フォルダーの下にあることを確認したいと思います。そうしないと、物理ファイルへの書き込みが黙って失敗します。

Appleでは、Pictures フォルダの場所を特定するために次のことを推奨しています。

Pictures ディレクトリには、ユーザーの画像と写真が含まれています。このディレクトリへのパスを取得するには、NSUserDomainMask ドメインで NSPicturesDirectory 検索パス キーを使用します。

上記を実装すると、次のようなパスが得られます。 /Users/thomas/Library/Containers/com.blazingfrog.latipics/Data/Pictures/picture1.jpg

しかし、ユーザーが選択した写真を見たいときは、[myOpenPanel URLs]戻ります/Users/thomas/Pictures/picture1.jpg

これら 2 つのパスは論理的には同じですが、見た目は大きく異なります。毎回機能する方法でそれらを比較するにはどうすればよいですか?

役立つ場合に備えて、サンドボックス用にアプリを準備するために、次のことを行いました

  • XCode で有効な資格
  • 有効なアプリ サンドボックス
  • 有効なファイル システム (読み取り)
  • 受信/送信ネットワーク接続を許可する有効化
  • 有効化されたピクチャ フォルダへのアクセス (読み取り/書き込み)
4

2 に答える 2

1
  1. 黙って失敗することはほとんどありません。問題が発生した場合は、できる限りユーザーに報告してください。これはまさにそのNSErrorために設計されたものです。

  2. 操作を試す前に、操作が成功するかどうかを判断しようとしないでくださいそうすることで、競合状態にさらされる可能性があります。代わりに、先に進んで操作を試してください。失敗した場合は、それを適切に処理してください。

  3. 実際にcom.apple.security.files.user-selected.read-write資格が必要なようです。これにより、ユーザーが開いているパネルを使用して選択したファイルへの書き込みアクセスが可能になります。

于 2012-06-01T10:57:50.873 に答える