ここで私の質問と回答を参照してください:アプリサンドボックス:ドキュメントスコープのブックマークが解決されません。エラーを返さない
コレクションスコープのブックマークをXMLファイルに埋め込んでいます。
アップデート
入力XML形式を制御できないという仕様がある場合、XMLで指定されたファイルにアプリからアクセスする唯一の方法は、ユーザーにそのファイルまたはファイルの親ディレクトリの1つを選択させることですNSOpenPanel
。XMLに複数のファイル参照が含まれている場合は、それらすべてを含むディレクトリへのアクセスをユーザーに許可させることができます。
許可を求めることは、サンドボックス化の目的を損なうため、回避する方法はありません。アプリがユーザーの直接の許可を回避できる場合は、マルウェアも回避できます。ただし、アクセス権が付与されると、各ファイルにセキュリティスコープのブックマークを作成できるため、ユーザーに何度も許可を求める必要はありません。
アップデート2
コメントの質問に答えると、次の方法でユーザーがダイアログを簡単に表示できるようになります。
[openPanel setMessage:@"Click 'OK' to allow access to files contained in the selected directory"];
[openPanel setDirectoryURL:[NSURL fileURLWithPath:pathFromTheXMLFile]];
これがに関するドキュメントNSSavePanel
です(NSOpenPanel
それを継承し、上記のプロパティはそこで定義されています)。