2011-08-10 8 views
2

私はAppleの開発サイトを含むWeb上にありますが、アプリケーションの/ Documentsディレクトリ属性NSFileProtectionKey = NSFileProtectionCompleteを設定する方法についての指示はありません。私は、アプリケーションを初めて実行するときに値を設定しましたが、別の方法で設定する方法はありますか? X-Codeのチェックボックス、plist、または他のものと同様です。iOS 5アプリケーションにデータ保護クラスの資格を追加するには

また、データ保護クラスがNSFileProtectionCompleteのディレクトリに格納されているファイルは、そのディレクトリと同じ保護クラスとして自動的に扱われますか?

おかげでたくさん、この上breezed

Fissh

答えて

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> 
+0

これについては、WWDC 2011のビデオ208「iOSアプリケーションの保護」を参照してください。このキーは38:12でカバーされていますが、ビデオ全体を見てみる価値があります。 –

+0

このエンタイトルメントアプローチのアイディアは、iOS 4.0以降でサポートされていますか?私はドキュメンテーションを検索しましたが、WWDC 2011以外のどこにも言及されていません。ビデオ208. –

+0

このメソッドは機能していますか? – satheeshwaran

0

WWDCセッション208は、私はあなたがそのキーを持つ資格ファイルを作成すると思うし、あなたはコードを書く必要はありません。

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

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"); 
} 

アプリが読み込まれると、上記のコードが呼び出され、ドキュメントディレクトリの保護が設定されていない場合は、設定されます。

Fissh

0

http://devforums.apple.com/message/627887 開発者フォーラムの例である:私はこのリンクを発見し、これは現在動作していない方法を資格やバグの問題のために提出されたので、我々は持っているでしょうDataProtectionClassエンタイトル

適用ファイルごとにファイルを実行する。

関連する問題