2016-12-21 12 views
2

私はCoreDataフレームワークを使用してユーザー情報をローカルに格納するアプリケーションを開発中です。情報は機密扱いになる可能性があるので、私はデータベースに保存されている情報をどのように保護するか考えています。 Xcodeのダッシュボードで、機能タブの下で、私は、このデータ保護スイッチを見つけました:CoreData&Data Protection

誰もが、これはどのように動作するか知っていますか?スイッチをオンにすると、Xcodeは自分のCoreDataファイルを自動的にエンコードしますか?または、私のCoreDataファイルにこの保護を実装する方法は? あなたの時間と患者を歓迎します。ありがとうございました!

+0

あなたはAppleのマニュアルを一度見てみましたか?どの部分に助けが必要ですか? –

+0

@Tom Harrington –

+0

@Tom Harringtonはい私はデータ保護に関するAppleの文書を調べましたが、それは非常に簡単であり、有用な方法や実装方法については言及していませんでした。私は現在、CoreDataデータベースにiOSのデータ保護を実装する方法について混乱しています〜 –

答えて

1

適切な場所を見つけたら、データ保護を使用することを知らせるために、ターゲットの機能ペインのデータ保護スイッチをオンにする必要があります。 Apple's documentationによると、これで十分です:

保護のデフォルトレベルとは、デバイスがロックされているとき が暗号化とアクセス不能にされているファイル、完全な保護です。あなたは プログラムでそれはあなたががプログラムの保護レベルを設定することができます述べて

[...]あなたの アプリによって作成されたファイルの保護のレベルを設定することができます。

NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys: 
         @YES, NSMigratePersistentStoresAutomaticallyOption, 
         @YES, NSInferMappingModelAutomaticallyOption, 
         NSPersistentStoreFileProtectionKey, NSFileProtectionComplete, // <-- HERE 
         nil]; 
... 

__persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]]; 
if (![__persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:options error:&error]) { 
... 
} 

NSFileProtectionComplete

を意味し、ファイルがに保存されています。persistentStoreCoordinatorを作成するとき、あなたは適切なオプションを使用する必要があります。あなたは(私はまだ保存すること、それを行う)ことをやりたい場合ディスク上に暗号化された形式であり、デバイスがロックされているか起動しているときには、 の読み取りまたは書き込みができません。

また、NSFileProtectionCompleteUnlessOpenを使用することもできます。違いについては、Xcodeクイックヘルプを参照してください。

+0

ありがとうございます。だから私はこの権利を理解している限り、私はターゲットの機能の枠内のデータ保護スイッチをオンにする限り、このアプリケーションに含まれているすべてのファイルが暗号化され、アクセスできません。 –

+0

しかし、プログラムで保護レベルを変更するオプションはまだあります。スイッチをオンにするような音が私には十分です:D –

+0

うん。おそらくこれがドキュメンテーションがとても簡単な理由です) – Dirk