0

アプリケーションで DML ステートメントに CoreData を使用していますが、すべて問題ありません。ただし、行数の取得などの単純なクエリに NSFetchedResultsController を使用したくありません。

fmdb を使用することにしましたが、SQL を記述するための実際のテーブル名がわかりません。エンティティとテーブルの名前が一致しません。TextEdit を使用して .sqllite ファイルの中を調べたこともありますが、希望はありません:) FMResultSet *rs = [db getSchema] は行を返しません

多分私の問題に対するより良い解決策がありますか?

前もって感謝します

4

1 に答える 1

1

Core Data は、すべての SQL 名の前にZ_. SQL コマンド ライン ツールを使用して永続ストア ファイルをチェックアウトし、使用されている名前を確認します。

ただし、これは非常に複雑で脆弱なソリューションです。Core Data スキーマは文書化されておらず、Core Data は直接の SQL アクセスをサポートしていないため、警告なしに変更されます。ストア ファイルに直接アクセスするとエラーが発生する可能性が高く、API が次に更新されたときにソリューションがランダムに壊れる可能性があります。

Core Data API は、求めている機能を提供します。NSExpressionDescription を使用して特定の値をフェッチするフェッチ リクエストを使用して関数を実行するだけです。これにより、カウント、最小値、最大値などの情報を取得できます。NSFetchedResultsController とは無関係に、このようなフェッチを作成して使用できます。

Core Data API は機能が豊富です。API 以外のデータ ソリューションを探している場合は、API の何かを見落としている可能性があります。

于 2011-08-25T14:12:48.670 に答える