問題タブ [nsfetchedresultscontroller]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
2346 参照

iphone - NSFetchedResultsControllerを使用してセクション挿入をどのように処理しますか?

データソースとしてNSFetchedResultsControllerを使用しており、カスタムUITableViewControllerにNSFetchedResultsControllerDelegateを実装しています。sectionNameKeyPathを使用して、結果セットを複数のセクションに分割しています。

私のメソッドの1つでは、コンテキストにいくつかのオブジェクトを追加しています。これらはすべて新しいセクションにあります。オブジェクトを保存した時点で、デリゲートメソッドが適切に呼び出されています。イベントの順序:

最後の呼び出し「endUpdates」で、アプリケーションは常に次のようにクラッシュします。

テーブルの更新が何らかの形でNSFe​​tchedResultsControllerデータと同期していないようで、問題が発生します。NSFetchedResultsControllerDelegateのドキュメントをフォローしていますが、機能していません。それを行う正しい方法は何ですか?

更新:このバグを示すテストプロジェクトを作成しました。NSBoom.zipからダウンロードできます。

0 投票する
1 に答える
13248 参照

iphone - Core Data がサポートする UITableView とインデックス作成

インデックス作成をサポートする Core Data に裏打ちされた UITableView を実装しようとしています (例: 横に表示される文字、およびそれらに付随するセクション ヘッダー)。Core Data を使用せずにこれを実装するのにまったく問題はありません:

また、インデックスを使用せずに Core Data に基づく UITableView を実装しても問題ありません。

私が理解しようとしているのは、2つをエレガントに組み合わせる方法ですか? 明らかに、コンテンツをインデックス化して再セクション化すると、標準の NSFetchedResultsController を使用して特定のインデックス パスにあるものを取得できなくなります。そのため、インデックス文字を NSArray に格納し、インデックス付きコンテンツを NSDictionary に格納しています。これはすべて表示には問題なく機能しますが、行の追加と削除、特にこれらのメソッドを適切に実装する方法に関しては、いくつかの頭痛の種があります。

返されたインデックス パスは、コア データのものと相関関係がないためです。ユーザーが行を追加するときにインデックス NSArray と NSDictionary を再構築するだけで機能を追加できますが、行を削除するときに同じことを行うと、アプリケーション全体がクラッシュします。

このすべてを適切に機能させるために、ここに欠けている簡単なパターン/例はありますか?

編集: 明確にするために、 NSFetchedResultsController がすぐに使用できることを知っていますが、私が望むのは、インデックスが人の名の最初の文字である連絡先アプリのような機能を複製することです。

0 投票する
2 に答える
3297 参照

iphone - Core Data iPhoneアプリのデザインパターン

Core Data モデルを使用するアプリを構築しています。私はObjective Cでかなり新しく、通常の設計パターンはCore DataとObjective Cには実際には適用されません.少なくとも、それらが適用されることを確認する例を見つけることができないようです.

私はインターチューブの Apple Developer の例とさまざまなソースを調べてきました。

Core Data を活用するには、それぞれの viewController に managedObjectContext を渡し、viewController に NSFetchedResultsControllerDelegate を実装させ、フェッチを実行するための各メソッドを実装し、その後実装する必要があるようです。

NSFetchedResultsChangeDelete NSFetchedResultsChangeMove NSFetchedResultsChangeUpdate

これにより、各 viewController に約 100 行以上のコードが追加されますが、90% は私が何度も書いた同じコードです。さらに、すべてを渡し、そのメモリ フットプリントを追跡する必要があります。

他の言語では、リクエストに応じてデータを維持および配信するためのメソッドを保持し、どこからでも利用できるいくつかのクラスのシングルトン モデルを構築します。Objective C でそのアプローチを取ることはできないようです。managedObjectContext を取得して必要なものを返す静的クラスを構築する場所がある場合、すべてのビューに managedObjectContext を渡す必要があり、そうではありません。結果の準備ができたときに呼び出されるデリゲート メソッドを実装するときのように、非同期的に。

これが理にかなっており、誰かがそれを行うための合理的な方法が他にないことを確認するか、これを良い方法でまとめる方向に私を向けるのを手伝ってくれることを願っています.

ありがとう:)

0 投票する
4 に答える
12324 参照

iphone - NSFetchedResultsControllerの並べ替えをその場で変更する

ある種のセグメント化されたコントロールによって、NSFetchControllerの並べ替えをオンザフライで変更しようとしています。A-> ZZ->Aタイプのものをソートします。

これを行うには何をする必要がありますか?私はここでジェフ・ラマルシェの例に従っています:ここに

新しいNSFetchedResultsControllerを作成してから設定する必要がありますか、それとも単に新しいNSFetchRequestを作成して実行する必要がありますか?

その後、私のテーブルは自動的に更新されますか?

0 投票する
2 に答える
293 参照

iphone - NSfetchedResultsControllerDelegateがクラッシュしたテーブルビュー

みなさん、こんにちは。NSFetchedResultsControllerDelegateを使用してテーブルビューを更新しています。例えば、

//テーブルビューにレコードがありません。

2009-11-15 12:25:48.328 XXX [36890:207]0//更新前のセクション数// テーブルビューの呼び出し更新の開始

2009-11-15 12:25:54.277 XXX [36890:207] insert0//新しいセクション を挿入//データの挿入を開始

2009-11-15 12:25:54.278 XXX [36890:207] NSFetchedResultsChangeInsert:行:31セクション:0 2009-11-15 12:25:54.278 XXX [36890:207] NSFetchedResultsChangeInsert:行:30セクション:0 2009- 11-15 12:25:54.278 XXX [36890:207] NSFetchedResultsChangeInsert:行:45セクション:0 2009-11-15 12:25:54.279 XXX [36890:207] NSFetchedResultsChangeInsert:行:62セクション:0 2009-11- 15 12:25:54.279 XXX [36890:207] NSFetchedResultsChangeInsert:行:12セクション:0 2009-11-15 12:25:54.280 XXX [36890:207] NSFetchedResultsChangeInsert:行:54セクション:0 2009-11-15 12 :25:54.280 XXX [36890:207] NSFetchedResultsChangeInsert:行:2セクション:0 2009-11-15 12:25:54.280 XXX [36890:207] NSFetchedResultsChangeInsert:行:14セクション:0 2009-11-15 12:25 :54.281 XXX [36890:207] NSFetchedResultsChangeInsert:行:63セクション:0 2009-11-15 12:25:54.281 XXX [36890:207] NSFetchedResultsChangeInsert:行:27セクション:0 2009-11-15 12:25:54.281 XXX [36890:207] NSFetchedResultsChangeInsert:行:5セクション:0 2009-11-15 12:25:54.282 XXX [36890:207] NSFetchedResultsChangeInsert:行:7セクション:0 2009 -11-15 12:25:54.282 XXX [36890:207] NSFetchedResultsChangeInsert:行:44セクション:0 2009-11-15 12:25:54.283 XXX [36890:207] NSFetchedResultsChangeInsert:行:51セクション:0 2009-11 -15 12:25:54.283 XXX [36890:207] NSFetchedResultsChangeInsert:行:9セクション:0 2009-11-15 12:25:54.283 XXX [36890:207] NSFetchedResultsChangeInsert:行:29セクション:0 2009-11-15 12:25:54.284 XXX [36890:207] NSFetchedResultsChangeInsert:行:64セクション:0 2009-11-15 12:25:54.284 XXX [36890:207] NSFetchedResultsChangeInsert:行:22セクション:0 2009-11-15 12: 25:54.284 XXX [36890:207] NSFetchedResultsChangeInsert:行:25セクション:0 2009-11-15 12:25:54.285 XXX [36890:207] NSFetchedResultsChangeInsert:行:57セクション:0 2009-11-15 12:25:54.285 XXX [36890:207] NSFetchedResultsChangeInsert:行:50セクション:0 2009-11-15 12:25:54.286 XXX [36890:207] NSFetchedResultsChangeInsert:行:13セクション:0 2009 -11-15 12:25:54.286 XXX [36890:207] NSFetchedResultsChangeInsert:行:8セクション:0 2009-11-15 12:25:54.287 XXX [36890:207] NSFetchedResultsChangeInsert:行:61セクション:0 2009-11 -15 12:25:54.287 XXX [36890:207] NSFetchedResultsChangeInsert:行:15セクション:0 2009-11-15 12:25:54.287 XXX [36890:207] NSFetchedResultsChangeInsert:行:53セクション:0 2009-11-15 12:25:54.288 XXX [36890:207] NSFetchedResultsChangeInsert:行:37セクション:0 2009-11-15 12:25:54.288 XXX [36890:207] NSFetchedResultsChangeInsert:行:34セクション:0 2009-11-15 12: 25:54.288 XXX [36890:207] NSFetchedResultsChangeInsert:行:52セクション:0 2009-11-15 12:25:54.289 XXX [36890:207] NSFetchedResultsChangeInsert:行:58セクション:0 2009-11-15 12:25:54.289 XXX [36890:207] NSFetchedResultsChangeInsert:行:4セクション:0 2009-11-15 12:25:54.290 XXX [36890:207] NSFetchedResultsChangeInsert:行:41セクション:0 2009 -11-15 12:25:54.290 XXX [36890:207] NSFetchedResultsChangeInsert:行:49セクション:0 2009-11-15 12:25:54.290 XXX [36890:207] NSFetchedResultsChangeInsert:行:39セクション:0 2009-11 -15 12:25:54.291 XXX [36890:207] NSFetchedResultsChangeInsert:行:26セクション:0 2009-11-15 12:25:54.291 XXX [36890:207] NSFetchedResultsChangeInsert:行:20セクション:0 2009-11-15 12:25:54.291 XXX [36890:207] NSFetchedResultsChangeInsert:行:1セクション:0 2009-11-15 12:25:54.292 XXX [36890:207] NSFetchedResultsChangeInsert:行:21セクション:0 2009-11-15 12: 25:54.292 XXX [36890:207] NSFetchedResultsChangeInsert:行:65セクション:0 2009-11-15 12:25:54.293 XXX [36890:207] NSFetchedResultsChangeInsert:行:38セクション:0 2009-11-15 12:25:54.293 XXX [36890:207] NSFetchedResultsChangeInsert:行:59セクション:0 2009-11-15 12:25:54.293 XXX [36890:207] NSFetchedResultsChangeInsert:行:47セクション:0 2009 -11-15 12:25:54.294 XXX [36890:207] NSFetchedResultsChangeInsert:行:28セクション:0 2009-11-15 12:25:54.294 XXX [36890:207] NSFetchedResultsChangeInsert:行:3セクション:0 2009-11 -15 12:25:54.295 XXX [36890:207] NSFetchedResultsChangeInsert:行:55セクション:0 2009-11-15 12:25:54.295 XXX [36890:207] NSFetchedResultsChangeInsert:行:23セクション:0 2009-11-15 12:25:54.295 XXX [36890:207] NSFetchedResultsChangeInsert:行:56セクション:0 2009-11-15 12:25:54.296 XXX [36890:207] NSFetchedResultsChangeInsert:行:40セクション:0 2009-11-15 12: 25:54.296 XXX [36890:207] NSFetchedResultsChangeInsert:行:16セクション:0 2009-11-15 12:25:54.296 XXX [36890:207] NSFetchedResultsChangeInsert:行:6セクション:0 2009-11-15 12:25:54.297 XXX [36890:207] NSFetchedResultsChangeInsert:行:60セクション:0 2009-11-15 12:25:54.297 XXX [36890:207] NSFetchedResultsChangeInsert:行:17セクション:0 2009 -11-15 12:25:54.298 XXX [36890:207] NSFetchedResultsChangeInsert:行:11セクション:0 2009-11-15 12:25:54.298 XXX [36890:207] NSFetchedResultsChangeInsert:行:33セクション:0 2009-11 -15 12:25:54.298 XXX [36890:207] NSFetchedResultsChangeInsert:行:19セクション:0 2009-11-15 12:25:54.299 XXX [36890:207] NSFetchedResultsChangeInsert:行:46セクション:0 2009-11-15 12:25:54.299 XXX [36890:207] NSFetchedResultsChangeInsert:行:36セクション:0 2009-11-15 12:25:54.299 XXX [36890:207] NSFetchedResultsChangeInsert:行:42セクション:0 2009-11-15 12: 25:54.300 XXX [36890:207] NSFetchedResultsChangeInsert:行:18セクション:0 2009-11-15 12:25:54.300 XXX [36890:207] NSFetchedResultsChangeInsert:行:48セクション:0 2009-11-15 12:25:54.301 XXX [36890:207] NSFetchedResultsChangeInsert:行:43セクション:0 2009-11-15 12:25:54.301 XXX [36890:207] NSFetchedResultsChangeInsert:行:0セクション:0 2009 -11-15 12:25:54.301 XXX [36890:207] NSFetchedResultsChangeInsert:行:10セクション:0 2009-11-15 12:25:54.302 XXX [36890:207] NSFetchedResultsChangeInsert:行:32セクション:0 2009-11 -15 12:25:54.302 XXX [36890:207] NSFetchedResultsChangeInsert:行:35セクション:0 2009-11-15 12:25:54.302 XXX [36890:207] NSFetchedResultsChangeInsert:行:24セクション:00 2009-11-15 12:25:54.302 XXX [36890:207] NSFetchedResultsChangeInsert:行:35セクション:0 2009-11-15 12:25:54.302 XXX [36890:207] NSFetchedResultsChangeInsert:行:24セクション:00 2009-11-15 12:25:54.302 XXX [36890:207] NSFetchedResultsChangeInsert:行:35セクション:0 2009-11-15 12:25:54.302 XXX [36890:207] NSFetchedResultsChangeInsert:行:24セクション:0

//更新を終了します//tableviewがクラッシュしました

2009-11-15 12:25:54.303 XXX [36890:207] *キャッチされなかった例外'NSRangeException'が原因でアプリを終了しています。理由:'* -[NSCFArray objectAtIndex:]:インデックス(65)が境界を超えています(1)' 2009- 11-15 12:25:54.303 XXX [36890:207]スタック:(32556123、2434330441、32640059、32639898、2149577、1745447、..)

**テーブルビューがクラッシュしました。また、コードでreloadDataを呼び出さない。

更新が完了した後にデータをリロードし、FetchResultsControllerDelegateからのすべての更新イベントを無視すると、すべてが正常に機能します。助けてください!

0 投票する
2 に答える
2420 参照

iphone - NSFetchedResultsControllerエラー:

NSFetchedResultsControllerを使用してCoreDataストアに新しいレコードを挿入した後、グループ化されたUITableViewにデータを表示しようとすると、次のエラーでアプリがクラッシュします。」

sortDescriptorsにセクションキー値を追加しましたが、役に立ちません。これが私のコードです:

}

ここで何が欠けていますか?

ありがとう -

Jk

0 投票する
2 に答える
1563 参照

uitableview - テーブルビュー外のNSFetchedResultsController制御UITableViewから削除するときのエラー

UITableView の NSFetchedResultsController によって管理されているオブジェクトを削除しようとしています。追加/削除ボタンを使用して別のビューから削除しようとしています。ただし、ビューを切り替えると、コントローラーとテーブルがうまくいかないように見え、その理由を理解できません。これが私が得ているエラーです-残念ながら、アプリケーションを通過するパスによっては、常に発生するとは限りません。

重大なアプリケーション エラーです。Core Data の変更処理中に例外がキャッチされました: *** -[NSCFArray removeObjectAtIndex:]: index (6) beyond bounds (6) with userInfo (null)

デリゲート メソッドが正しく呼び出されていることを確認できます。また、削除コードは非常に単純で、エラーは表示されません。

どんな考え/デバッグのヒントも大歓迎です。

0 投票する
1 に答える
1139 参照

iphone - コア データを使用して sectionIndexTitlesForTableView をオーバーライドするにはどうすればよいですか?

セクション ヘッダーの完全な日付を表示するテーブルを作成したいと思います。@"EEEE dd MMMM yyyy". 次に、右側の高速ユーザー インデックスで @"MMM" 値を使用して、特定の月にすばやくアクセスできるようにします。

コアデータの最初の文字のデフォルト値を使用して、インデックスを機能させることができます。したがって、fetchedResultsController が機能し、適切なデータを取得しています。このメソッドをオーバーライドするための提案についてドキュメントを確認しました。それはできると言っていますが、それがどのように行われたかを示すには至りません。

助言がありますか?

0 投票する
2 に答える
4879 参照

iphone - エンティティ xxx は、キー "(null)" のキー値コーディングに準拠していません

Core Data エンティティ用の単純なテーブル ビュー エディターを作成しようとしています。残念ながら、私は問題に直面しています。

最初のエンティティをテーブルに追加するときにエラーが発生します。モーダル ダイアログを表示するプロセスは次のとおりです。

の中にNameEditController、[完了] ボタンが押された後にこれがあります。

オブジェクトを初めて作成したとき (リストが空の場合)、次のようになります。

コア データの変更処理中に例外がキャッチされました: [ valueForUndefinedKey:]: エンティティ グループは、キー "(null)" のキー値コーディングに準拠していません。

ダイアログを表示する前に「名前」フィールドに入力すると、最初のエンティティを正常に追加できます。

[newManagedObject setValue:@"新しいグループ" forKey:@"名前"]; //これは機能します

私はNSFetchedResultsControllerテーブルビューBTWを管理するために使用しています。

ありがとう!