問題タブ [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 - 異なるエンティティに対して複数の NSFetchedResultControllers?
iPhone Core Data プロジェクトのデフォルトの Xcode テンプレートをチェックアウトしています。フェッチされた結果コントローラーを返すメソッドでは、次のように表示されます。
特定のエンティティ名を設定しているようです。複数のエンティティがある場合はどうなりますか? 2 つの NSFetchedResultsController インスタンスがあり、使用しているエンティティに応じて正しいコントローラーを返す 2 つのメソッドがあるでしょうか?
ありがとう
iphone - コアデータ:複数のNSFetchedResultControllersを備えたUITableView
私がやりたいことはとても簡単です。UITableViewControllerで、複数のNSFetchedResultControllers(データモデルに複数のエンティティがあります)からデータをロードし、それぞれのデータをテーブルビューの異なるセクションに配置します。したがって、たとえば、最初のNSFetchedResultControllerからフェッチされたすべてのアイテムはUITableViewのセクション0に移動し、他のアイテムからフェッチされたアイテムはセクション1に移動します。
Core Dataテンプレートプロジェクトは、これを行う方法を示していません。すべて(主にインデックスパス)はセクションを考慮せずにコーディングされ(デフォルトのテンプレートにはセクションがありません)、すべてが単一のNSFetchedResultControllerから取得されます。これを行うことを示すサンプルプロジェクトまたはドキュメントはありますか?
ありがとう
iphone - あるUITableViewControllerから別のUITableViewControllerに移動すると、NSFetchedResultsControllerがクラッシュする
私のコアデータモデルには、Courseエンティティの「tomany」関係を持つPersonエンティティがあります(Course to Personの逆の「toone」関係もあります)。
これで、NSFetchedResultsControllerを使用して正常に機能するPersonオブジェクトを表示するサブクラス化されたUITableViewControllerができました。Personをクリックすると、NSFetchedControllerを使用してPersonに関連付けられたコースを表示する別のサブクラス化されたUITableViewControllerを公開するように設定しました。
問題:Personをクリックして、Course UITableViewControllerを表示しようとすると、この例外が発生します...
"Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'keypath name not found in entity <NSSQLEntity Course id=2>
'"
解決またはトラブルシューティングの方法に関するアイデアはありますか?
2つのViewController間のコードは、NSFetchedResultsControllerが1つの「Person」エンティティと別の「Course」エンティティ用に構成されていることを除いて、ほぼ同じです。
iphone - 同じビュー内の Core Data で複数のフェッチを実行する
CD ストアのセットアップが完了し、すべてが機能しています。最初のフェッチが実行されたら、最初のフェッチからのデータを使用した計算に基づいて、いくつかのフェッチを実行する必要があります。Apple から提供された例は素晴らしく、すべてを進めるのに役立ちましたが、連続したフェッチの実行に苦労しています。提案やチュートリアルのリンクを歓迎します。
- Table View は CD ストアからデータを読み込みます。
- ユーザーが行をタップすると、詳細ビューがプッシュされます
- 詳細ビューは CD から詳細を読み込みます。[上記の手順はすべて機能しています]
- 詳細ビューで取得したデータに対していくつかの計算を実行します。
- 次に、計算の結果に基づいて、他のフェッチをいくつか実行する必要があります。
cocoa - NSFetchedResultsControllerの変換可能な属性で並べ替えるにはどうすればよいですか?
NSValueTransformersを使用してCoreDataモデルの属性(文字列、日付など)を暗号化していますが、NSFetchedResultsControllerでの並べ替えに干渉していると確信しています。
これを回避する方法があるかどうか誰かが知っていますか?ソートの実行方法に依存すると思います。それが常にデータベース上で直接実行されるだけである場合、私はおそらく運が悪いです。オブジェクト自体でソートする場合は、ソートが発生する前に変換をアクティブ化する方法があるかもしれません。
ただし、コレクションのサブセットを取得するにはソートが重要であるため、データベースに直接あると思います。これは、とにかくNSFetchedResultsControllerの主な利点です。
注:ここで奇妙な動作があることを付け加えておきます...コレクションは最初のセッション(オブジェクトが作成されるセッション)ではソートされませんが、後続のセッション(オブジェクトが既に存在し、取得中)。したがって、ソートはトランスフォーマブルで機能する可能性がありますが、最初に保存する必要があるという点で注意が必要です(?)
iphone - NSFetchedResultsController は私を夢中にさせています
NSFetchedResultsController を使用して 1 か月からアプリを構築しており、3.1.2 SDK でアプリをテストしていました。問題は、アプリのあらゆる場所で NSFetchedResultsController を使用していて、SDK の 3.1.2 バージョンで作業していたことです。現在、クライアントは、3.0 バージョンと互換性を持たせる必要があると言い、締め切りが迫っています。
しかし、コントローラーによって処理されるオブジェクトを変更するたびにクラッシュします。アプリケーションは非常に奇妙なエラーでクラッシュします。
この問題は、セクション内の最後のオブジェクトを削除するとき、および変更によってオブジェクトが別のセクションに影響を与えるときに発生します。
Dave Mark と Jeff LaMarche による「iPhone 3 Development Tackling iPhone SDK 3」のサンプル コードを使用しています。リンクテキストからの変更も含めました
アプリケーションがクラッシュしたときのコンソールの出力例を次に示します。
*** キャッチされない例外 'NSInternalInconsistencyException' が原因でアプリを終了します。理由: '無効な更新: セクションの数が無効です。更新後のテーブル ビューに含まれるセクションの数 (1) は、更新前のテーブル ビューに含まれるセクションの数 (2) に、挿入または削除されたセクションの数 (2 挿入、0削除されました)」2010-03-14 16:23:29.758 Instaproofs[5879:207] Stack: ( 807902715, 7364425, 807986683, 811271572, 815059090, 815007323, 211023, 4363331, 810589786, 807635429, 810579728, 3620573, 3620227, 3614682, 3609719, 27337 、810595174、807686849、807683624、839142449、839142646、814752238)
NSFetchedResultsController が非常にバグが多いことを知っていたら、私は決してそれを使用しませんでした。
基本的に、3.0以降のSDKで正常に動作するには、NSFetchedResultsControllerDelegateが必要です。
誰かが私が間違っていることを理解するのを手伝ってくれれば、命の恩人になります.
iphone - カスタム セクション名が NSFetchedResultsController をクラッシュさせる
dueDate 属性を持つマネージド オブジェクトがあります。UITableView のセクション ヘッダーとして醜い日付文字列を使用して表示する代わりに、「category」という一時的な属性を作成し、次のように定義しました。
NSFetchedResultsController のセットアップは次のとおりです。
テーブルは最初は正常に表示され、「進行中」というタイトルのセクションに dueDate が渡されていない未完成のアイテムが表示されます。これで、ユーザーはテーブル ビューの行をタップして、新しい詳細ビューをナビゲーション スタックにプッシュできます。この新しいビューで、ユーザーはボタンをタップして、アイテムが「完了」したことを示すことができます。ボタンのハンドラーは次のとおりです (self.task は管理対象オブジェクトです)。
「finishedDate」属性の値が変更されるとすぐに、次の例外が発生します。
データセットで何かが変更されたことが NSFetchedResultsController に通知されたため、新しい詳細ビューによって現在非表示になっている UITableView が行とセクションを更新しようとしていることがわかりました。これが私のテーブル更新コードです (Core Data Recipes サンプルまたは CoreBooks サンプルのいずれかからコピーしたもので、どちらを思い出せません)。
これらの各関数にブレークポイントを設定したところ、controllerWillChange のみが呼び出されることがわかりました。controller:didChangeObject:atIndexPath:forChangeType:newIndex または controller:didChangeSection:atIndex:forChangeType が呼び出される前に、例外がスローされます。
この時点で私は立ち往生しています。sectionNameKeyPath を単に「dueDate」に変更すると、すべて正常に動作します。これは、dueDate 属性が変更されないのに対し、finishedDate 属性が変更された後に読み返すとカテゴリが異なるためだと思います。
助けてください!
アップデート:
ここに私の UITableViewDataSource コードがあります:
iphone - NSFetchedResultsController:述語の変更が機能しない?
1 つの画面に 2 つのテーブルがあるアプリを作成しています。左の表はフォルダのリスト、右の表はファイルのリストです。左側の行をタップすると、右側のテーブルにそのフォルダーに属するファイルが表示されます。
ストレージには Core Data を使用しています。フォルダーの選択が変更されると、右側のテーブルの NSFetchedResultsController のフェッチ述語が変更され、新しいフェッチが実行され、テーブル データがリロードされます。次のコード スニペットを使用しました。
ただし、フェッチ結果は同じままです。フェッチの前後に「述語」を NSLog しましたが、それらは更新された情報で正しかったです。フェッチ結果は、最初のフェッチと同じままです (ビューがロードされたとき)。
Core Data がオブジェクトを取得する方法にはあまり詳しくありませんが (キャッシュ システムはありますか?)、以前に同様のこと (述語の変更、データの再取得、テーブルの更新) を単一のテーブル ビューで行ったことがあり、すべてがうまくいきました。良い。
誰かが私にヒントを与えることができれば、私は非常に感謝しています.
前もって感謝します。
iphone - コア データ: キーパス "objectID" がエンティティに見つかりません
NSFetchedResultsController
アプリケーションにリストをロードするために述語を使用しDocuments
ています。Documents
現在アクティブなものを除くすべてをロードしたい。
Rentzsch のMOGeneratorを使用してクラスを作成し、_Document
すべてのカスタム コードをDocument
サブクラスに配置します。type のプロパティを_Document
生成します。objectID
DocumentID
コントローラーを作成するクラスで、コントローラーのcurrentDocID
プロパティを設定します。
コントローラー自体では、次のように fetchedResultsController を遅延ロードします。
fetchedResultsController が読み込まれると、未処理の例外でアプリがクラッシュします。
一時的か永続的かにかかわらず、すべての NSManagedObjects に objectID があることを理解しています。そうではありませんか?何かご意見は?