2

私はAppleの開発サイトを含むWeb全体を調べましたが、アプリの/ Documentsディレクトリ属性NSFileProtectionKey = NSFileProtectionCompleteを設定する方法についての指示が見つかりません. アプリの初回実行時に値を設定しましたが、別の方法で設定する方法はありますか? X-Code チェックボックス、plist、またはその他のように。

関連するメモ: NSFileProtectionComplete のデータ保護クラスを持つディレクトリの下に保存されているファイルは、そのディレクトリと同じ保護クラスとして自動的に扱われますか?

本当にありがとう、

フィッシュ

4

4 に答える 4

4

アプリケーションの Documents ディレクトリ内のファイルをコードなしで保護するには、entitlements.plist をアプリケーションに追加する必要があります。

entitlements.plist で、「NSFileProtectionComplete」値を使用して「DataProtectionClass」キーを追加します。デバイスがロックされている限り、ファイルは自動的に保護されます。

ここに例があります

<?xml version="1.0" encoding="UTF-8"?>
  <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
  <plist version="1.0">
    <dict>
      <key>DataProtectionClass</key>
      <string>NSFileProtectionComplete</string>
    </dict>
  </plist>
于 2012-01-04T13:40:17.523 に答える
0

これは、/Documentsディレクトリ保護を正しく設定する方法を理解するまで私が思いついたハックです。

NSError *error;
NSDictionary *attrs = [self attributesOfItemAtPath:DOCUMENTS_FOLDER error:&error];
if(![[attrs objectForKey:NSFileProtectionKey] isEqual:NSFileProtectionComplete])
{
    attrs = [NSDictionary dictionaryWithObject:NSFileProtectionComplete forKey:NSFileProtectionKey];
    BOOL success = [self setAttributes:attrs ofItemAtPath:DOCUMENTS_FOLDER error:&error];
    if (!success) 
        NSLog(@"Set ~/Documents attr NOT successfull");
}

アプリのロード時に上記のコードを呼び出すだけで、まだ設定されていない場合はドキュメントディレクトリ保護を設定できます。

フィッシュ

于 2011-08-29T17:13:41.280 に答える
0

WWDCセッション208はこれにそよ風を吹き込みました。そのキーを使用してエンタイトルメントファイルを作成し、コードを記述する必要はないと思います。

私はまだこれを行っていないので、それが機能するかどうかは完全にはわかりません。

于 2011-08-25T16:37:28.607 に答える
0

http://devforums.apple.com/message/627887 開発者フォーラム: DataProtectionClass 資格の適用

このリンクを見つけましたが、この権利付与方法は現在機能しておらず、バグの問題を報告しているため、ファイルごとに行う必要があります。

于 2012-03-28T18:17:05.007 に答える