2

私はNSSavePanel自分のアプリでを使用しています。私のOSX10.7ではすべて正常に動作しますが、アプリケーションはAppleによって拒否され、次のコメントがあります。

2回目のエクスポートでは、以前に選択した保存場所は機能しません。ファイルを書き込むには、ユーザーは場所の選択を解除してから、もう一度選択する必要があります。必要な資格があることを確認してください。

このレビューは、OSX10.8を実行しているiMacで実施されました。

これは私の保存パネルコードです:

NSSavePanel *savePanel = [NSSavePanel savePanel];
[savePanel setAllowedFileTypes:[NSArray arrayWithObject:@"mov"]];
[savePanel setDirectoryURL:[NSURL URLWithString:@"/Documents"]];
[savePanel setNameFieldStringValue: videoName];

[savePanel beginSheetModalForWindow:window completionHandler:^(NSInteger result){
    if (result == NSFileHandlingPanelOKButton) {
        NSError *error = nil;
        NSString *sourceFilePath = [NSString stringWithFormat:@"%@/%@",[[NSBundle mainBundle] resourcePath], videoName];
        NSString *destFilePath = [[savePanel URL] path];
        NSFileManager *fileManager = [[NSFileManager alloc] init];
        if(![fileManager copyItemAtPath:sourceFilePath toPath:destFilePath error:&error])
            NSLog(@"%@", error);
    }
}];

現在、私はこれらのフラグを使用しています。

 <dict>
    <key>com.apple.security.app-sandbox</key>
    <true/>
    <key>com.apple.security.assets.movies.read-write</key>
    <true/>
    <key>com.apple.security.files.downloads.read-write</key>
    <true/>
    <key>com.apple.security.files.user-selected.read-write</key>
    <true/>
</dict>

この問題を解決するには、どの資格フラグを使用する必要がありますか?

4

1 に答える 1

1

アプリの同じ実行で2回保存することについて話している場合は、資格は必要ありません。ユーザーがからファイルを選択すると、そのファイルはNSSavePanelアプリのサンドボックスにあります。保存パネルが両方の時間表示されている場合も同じことが当てはまります。「正常に機能する」はずです。連続する実行間で同じ場所にあり、2回目に保存パネルがない場合は、セキュリティスコープのブックマークをファイルに保存する必要があります。

例については、この質問に記載されているサンプルコード(および受け入れられた回答の修正)を参照してください。AppSandbox:ドキュメントスコープのブックマークが解決されていません。エラーを返さない

于 2012-09-23T02:10:55.177 に答える