問題タブ [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.
iphone-sdk-3.0 - NSFetchedResultsControllerエラー:インデックス248でフェッチされたオブジェクトのセクション名が正しくありません
ここで解決策を試してください: https ://stackoverflow.com/questions/1741093?tab = newest#tab-top
私は一時的なプロパティとカテゴリソリューションを使用していますが、インデックス文字が再びAにラップアラウンドし始めるまでは機能しているようですが、なぜそれが行われているのかわかりません。カテゴリ/一時的なゲッターが何を返しているかをログに記録するだけです。 uppercaseFirstLetterOfName。
nameプロパティを使用して並べ替えてから、fetchRequestのsectionNameKeyPathをuppercaseFirstLetterOfNameに設定しています。
完全なエラーは次のとおりです。NSFetchedResultsControllerエラー:インデックス248でフェッチされたオブジェクトのセクション名が「Y」になっています。オブジェクトはセクション名でソートする必要があります'
私が間違っていたかもしれないアイデアや、問題を追跡する方法さえありますか?
iphone - NSFetchedResultsController と私の TableView 構造
2 つのセクションを持つ tableView コントローラーがあります。最初のセクションにはいくつかの入力フィールドがあり、コア データは実際には表示されていません。2 番目のセクションには、Core Data で保存されたデータベースのアイテムが表示されます。
私は を持っており、次のようにとのNSFetchedResultsController
データを提供しています。セクション = 0 の場合、適切な入力フィールドを手動で提供し、セクション = 1 の場合は を使用します。() ただし、フェッチされた結果のコントローラーは 1 つのセクションしか認識していないため、これは機能しません。cellForRowAtIndexPath
didSelectRowAtIndexPath
[fetchedResultsController objectAtIndexPath:indexPath]
セクション = 0 で新しい IndexPath を作成し、それをNSFetchedResultsController
. それが望ましい解決策NSFetchedResultsController
ですか、それとも何を期待するかを「伝える」別の方法はありますか?
iphone - NSFetchedResultsControllerDelegate メソッドは、その述語が IN を使用する場合に呼び出されませんか?
私はNSFetchedResultsControllerと組み合わせてUITableViewControllerを実装しています。UITableViewController がインスタンス化されると、以前のコントローラーでユーザーが行った選択に基づいて、別の述語を使用して( CoreDataBooksの例と実質的に同じ方法で) NSFetchedResultsController が構築されます。
時々、次のように述語を設定します。
時々このように:
両方の述語は、期待どおりにすべてのオブジェクトを正しくフェッチするため、正常に機能します。2 番目の述語が設定されているときに、新しい管理対象オブジェクトをリストに挿入しようとすると、問題が発生します。実際、この場合、FRC デリゲート メソッドは呼び出されないため、テーブルビューは自動的に更新されません。
新しいオブジェクトが FRC で使用される同じコンテキストに正しく追加され、デリゲートがトリガーされるように「コンテナー」関係が設定されていることは確かですが、そうではありません!
私が試したこと:
新しいオブジェクトを追加してから UITableViewController をポップして再度プッシュすると、すべてのデータが強制的に再取得され、新しいオブジェクトが問題なくリストに表示されるため、2 番目の述語は正常に機能していると言えます。
私が行った別のテストは、新しいオブジェクトが追加された直後に FRC を強制的に再計算することです。
新しいオブジェクトが正しく表示されます。
コード:
私が使用している NSFetchedResultsControllerDelegate メソッドは、「その他の iPhone 3 開発」から取られています。完全なコードは、ここ(30 ~ 31、35 ページ)で参照できます。
必要に応じてここに投稿できます。
iphone - NSFetchedResultsController: オブジェクトが上位インデックスから下位インデックスに移動するときの例外
NSFetchedResultsController によって管理されるテーブル ビューがあります。TableViewController で Apple 提供のボイラープレート コードを使用しています。私の述語は、名前に基づいてオブジェクトを取得します。「編集」ボタンを使用したオブジェクトの追加/削除に関しては、すべて正常に機能しているようです。プログラムでオブジェクトの名前を変更すると、名前の変更によってオブジェクトがテーブルの上に移動しない限り、問題なく動作します。この場合、次のエラーが発生します。
重大なアプリケーション エラーです。-controllerDidChangeContent: の呼び出し中に、NSFetchedResultsController のデリゲートから例外がキャッチされました。*** -[NSMutableArray objectAtIndex:]: userInfo (null) の範囲 [0 .. 0] を超えるインデックス 1
A、C、D という名前の 3 つのオブジェクトがあるとします。D の名前を B に変更すると、アプリがクラッシュします。C の名前を B に変更すると、すべてがクールになります。
何が起きてる?
iphone - 境界を超えた NSFetchedResultsController インデックス
テーブルビューに項目を表示するために NSFetchedResultsController を使用しています:
ただし、このコードは次の行で壊れます。
Tag *tag = [self.fetchedResultsController objectAtIndexPath:indexPath];
このメッセージで:
NSLogged を実行したところ[self.fetchedResultsController fetchedObjects]
、Tag オブジェクトが実際に存在することが確認できました。上記の行をこれに置き換えると、すべてが期待どおりに機能します。
Tag *tag = [[self.fetchedResultsController fetchedObjects] objectAtIndex:indexPath.row];
私は NSLoggedindexPath
で、インデックスは {0, 0} (セクション 0 行 0) であるため、セクションの問題ではないことがわかります。理論的には、これら 2 つのコードは同じことを行うため、なぜこれが起こっているのかについて非常に混乱しています。どんな助けでも大歓迎です。
ありがとう
更新:
このコードでは、同じ例外が発生します。Tag *tag = [[section objects] objectAtIndex:[indexPath row];
I の場合NSLog
[section objects]
、空の配列が返されます。[fetchedResultsController fetchedObjects]
正しいオブジェクトを含む配列を返し、何も返さない理由が[section objects]
わかりません。これは、私が作成しているオブジェクトにセクションがないということですか? 新しいオブジェクトを追加するために使用するコードは次のとおりです。
そして、ここに私のsaveContext
方法があります:
ここで何か間違ったことをしていますか?
iphone - NSFetchedResultsControllerの代わりにNSMutableArrayを使用する
私は最近、それNSFetchedResultsController
が非常にバグの多いクラスであり、それが私のかなり大きなCoreDataアプリでしばらくの間頭痛を引き起こしていることを知るようになりました。
NSMutableArray
?の代わりにを使用してテーブルビューをフィードするのが適切でしょうNSFetchedResultsController
か?私が話しているのは、フェッチされた結果コントローラーを一時的に作成して、管理対象オブジェクトコンテキストからオブジェクトを取得し、フェッチされた結果コントローラーから新しいものNSMutableArray
を作成しfetchedObjects
、それを使用してテーブルビューにフィードすることです。
テーブルビューにデータを提供するためにNSFetchedResultsController
直接使用することに利点はありますか?NSMutableArray
iphone - Core Data Relationships、NSPredicates および NSFetchedResultsController
これは一日中私を夢中にさせています。
NSPredicate に絞り込んだと思われる奇妙なバグがあります。List と Person の 2 つのエンティティがあります。List は Persons と呼ばれる Person と対多の関係を持ち、Person は Lists と呼ばれる List と対多の関係を持ちます。
テーブルビュー コントローラーに List オブジェクトを渡します。次に、そのテーブルビュー コントローラーに、そのリスト オブジェクトに属する人物を表示させたいと考えています。私はNSFetchedResultsControllerでこれをやっています。
NSFRC をセットアップするとき、次のコードを使用します (明確にするためにメモリ管理は省略されています)。問題のリストは次のmyList
とおりです。
問題はこの行にあると思います(削除すると消えるため):
親ビューがmyList
テーブルビューコントローラーに渡されると、シミュレーターがハングアップします。コンソールなどにクラッシュログはありません。NSFRC を整理するために AGES を使用しているように見えます。
これは私が使用している述語に問題がありますか?
iphone - BWOrderedManagedObject と NSFetchedResultsController の使用
BWOrderedManagedObject
データの表示に使用して、順序付けられたオブジェクトの配列を Core Data に格納するために使用したいと思いNSFetchedResultsController
ます。
ただし、BWOrderedManagedObject
のメソッドはすべて、順序付けられたオブジェクトの配列を単純に返すように見えます。NSFetchedResultsController
は を必要としNSFetchRequest
、 をソートする唯一の方法NSFetchRequest
は の配列を提供することですNSSortDescriptors
。
それで、私はBWOrderedManagedObject
withの使用方法についてここで少し立ち往生NSFetchedResultsController
しています—これをうまく行う方法を知っている人はいますか?
(おそらく独自の順序付けキーを作成し、これをソート記述子で使用することもできますが、そのBWOrderedManagedObject
方がより堅牢であると思います...?)
iphone - UISearchResultsControllerがデバイスでクラッシュします(空の配列の境界を超えるインデックス)
UISearchResultsController
からのデータをフィルタリングするために使用していfetchedResultsController
ます。関連するコードは次のとおりです。
でRootVieweController.h
:
でRootViewController.m
:
これはシミュレーターでうまく機能します。ただし、デバイスでは、searchResultsTableViewを表示しようとするとクラッシュobject = [[self filteredListContent] objectAtIndex:[indexPath row]];
します。configureCell
エラーが発生します[NSMutableArray objectAtIndex:]: index 7 beyond bounds for empty array
。常にインデックス7。ここで何が欠けていますか?
- アップデート -
修正:を反転して、の代わりに、およびの代わりsearchIsActive
BOOL
にスイッチをオンにしました。これにより、テーブルが存在しないセルを構成しようとするのを防ぎます。シミュレータがこれをキャッチしなかった理由はわかりませんsearchDisplayControllerDidBeginSearch
searchDisplayControllerWillBeginSearch
searchDisplayControllerWillEndSearch
searchDisplayControllerDidEndSearch
iphone - 「NSFetchedResultsController は、NSDictionaryResultType を使用した変更追跡とフェッチ要求の両方をサポートしていません」
OS3+ で問題なく動作するアプリケーションがあります。ただし、OS4 では動作しません。次のエラー メッセージが表示されます。
「NSFetchedResultsController は、NSDictionaryResultType を使用した変更追跡とフェッチ要求の両方をサポートしていません」
ここにいる誰かにベルを鳴らしますか?
前もって感謝します。