2

私はプロジェクトの途中で立ち往生しています。

私の目的は私のデータを保護することです。

Nickharrisのブログ(コアデータとエンタープライズiPhoneアプリケーション–データの保護)を確認しました。

しかし、結論として、次のことが明確に述べられています。

アプリケーションがバックグラウンド処理でCoreDataストアを必要とする場合、データ保護を使用することはできませんNSFileProtectionCompleteであるファイルにアクセスしようとすると、例外が発生します。

そして、私はバックグラウンド処理でコアデータを使用しています。

これに関して助けてください。とにかくデータを暗号化して保護したい

ありがとう、Tariq

4

3 に答える 3

5

iOS 5ではどちらかを使用できますが、それぞれに問題があります。

  1. NSFileProtectionCompleteUnlessOpen-ファイルは暗号化された形式でディスクに保存され、デバイスのロックが解除されている間に開く必要があります。開くと、ユーザーがデバイスをロックした場合でも、ファイルは通常どおりファイルにアクセスし続ける可能性があります。

  2. NSFileProtectionCompleteUntilFirstUserAuthentication-ファイルは暗号化された形式でディスクに保存され、デバイスが起動するまでアクセスできません。ユーザーが初めてデバイスのロックを解除した後、アプリケーションはファイルにアクセスし、その後ユーザーがデバイスをロックした場合でもファイルにアクセスし続けることができます。

出典:iOS開発者ライブラリ

于 2011-12-09T07:56:13.270 に答える
4

ドキュメントによると、NSFileProtectionCompleteは、アプリケーションがバックグラウンドにある(または実行されていない)間はファイルの読み取りまたは書き込みができないことを示しています。

アプリケーションの実行中にSQLiteストアの読み取り/書き込みを行うことは問題ありませんが、「バックグラウンド」にある間はSQLiteストアにアクセスできません。

これは、次のようなiOSバックグラウンドAPIを活用する操作を意味します。

  • プッシュ通知
  • バックグラウンドオーディオ/場所
  • タスクの完了(背景)
  • ボイスオーバーIP

SQLiteストアにアクセスできなくなります。ただし、アプリの実行中は、通常どおりNSPersistentStoreCoordinatorにアクセスできるはずです。デバイス側のテストでは、バックグラウンドAPIの1つから永続ストアコーディネーターを作成できなくなる可能性があります。

于 2010-11-22T20:20:10.743 に答える
-4

メインスレッドでファイルアクセス呼び出しを行います-NSObjectには本当に便利なメソッドがあります:)

// When you need to get the data from the file do this :
NSData *data = [self performSelectorInMainThread:@selector(getFileData:) withObject:filename waitUntilDone:YES];


// And somewhere else in your class have this method
- (NSData *)getFileData:(NSString *)filename {
    ...
    // Get data from file and return it
    ....
}

お役に立てば幸いです。

于 2010-11-22T10:04:49.583 に答える