問題タブ [nsfetchrequest]
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.
cocoa - setIncludesSubentities:NSFetchRequestで、複数の永続ストアにまたがるエンティティに対して壊れています
これに完全に対処していない先行技術: コアデータ移行エラーメッセージ「'モデルに構成'XYZ'が含まれていません。」
これを特定の問題に絞り込みました。ただし、セットアップには1分かかります。我慢してください。
問題の要点は、persistentStoreCoordinatorが(明らかに)管理対象オブジェクトが別のファイルに保存されているときに別のサブエンティティとしてマークされているオブジェクトグラフの部分を保持できないことです。ここに行く...
1)2つのxcdatamodelファイルがあり、それぞれに1つのエンティティが含まれています。実行時に、管理対象オブジェクトモデルが構築されるときに、setSubentities:を使用して、あるエンティティを別のエンティティのサブエンティティとして手動で定義します。これは、エディターで複数のファイルにまたがるサブエンティティーの定義がまだサポートされていないためです。次に、modelByMergingModelsを使用して完全なモデルを返します。
2)エンティティごとに異なるストアを設定するようにpersistentStoreCoordinatorメソッドを変更しました。技術的には、構成を使用し、各エンティティには1つだけの構成が定義されています。
3)親エンティティにfetchRequestを設定し、setIncludesSubentities:とsetAffectedStores:を使用して、1)と2)の両方がカバーされていることを確認します。いずれかのエンティティのオブジェクトを挿入すると、両方がコンテキストに追加され、両方ともfetchedResultsControllerによってフェッチされ、期待どおりにtableViewに表示されます。
ここで誤動作が始まります。アプリを閉じて再起動すると、親エンティティのみが取得されます。
setEntity:を使用してリクエストのエンティティを「Note」のエンティティに変更すると、すべてのノートがフェッチされます。'Browser'のエンティティに変更すると、すべてのブラウザがフェッチされます。オブジェクトが最初にコンテキストに挿入される実行中に、オブジェクトがリストに表示されることを繰り返します。フェッチ要求が階層をトラバースできないのは、保存して再起動した後だけです。
したがって、問題は継承のストレージであると結論付けることしかできません。理由を要約しましょう:
- -両方のエンティティを作成し、コンテキストに挿入して表示できるため、モデルは機能しています
- -両方のエンティティを1回のリクエストでフェッチできるため、継承が機能しています
- -ファイルが個別に保存され、オブジェクトが適切なストアに格納されていることを確認できるため、保存が機能しています
- -リクエストにいずれかのエンティティが設定された状態でアプリを起動すると機能するため、ストアからの取得が機能します
- -これは、リクエストでさまざまなストアをトラバースすることも機能していることを意味します
- -複数ではなく単一のストアを使用することで、問題が完全に解消されるため、作成、保存、フェッチ、表示などが正しく機能します。
これにより、(私の考えでは)1つの原因のみが残ります。setSubentitiesで設定している継承:は、セッション中に作成されたオブジェクトに対してのみ有効です。
オブジェクト/エンティティが継承情報を取り除いて保存されているか、プログラムで定義されたエンティティの継承が新しいインスタンスにのみ適用されるか、またはその両方です。これらのいずれも受け入れられません。それはバグであるか、私は道を外れています。
私は2日間、あらゆる方法でこれに取り組んできました。どんな洞察も大歓迎です。現在の回避策(単一のストアを使用するだけ)は完全に機能しますが、アプリからモデルの1つを削除した場合など、将来にわたって利用できるわけではありません。また、理由がわからないため、頭がおかしくなります。 (setSubentities :)のコア定義で機能しない場合は、複数のストアにまたがって保存し、影響を受けるストアをフェッチ要求に設定するためのこのすべてのインフラストラクチャがあります。
iphone - 計算値でソートされた管理対象オブジェクトを取得する方法
CoreData を使用するアプリに取り組んでいます。緯度と経度の値を保持する場所エンティティがあります。ユーザーの場所までの距離で並べ替えられたエンティティを取得したいと思います。ソート記述子を距離式 sqrt ((x1 - x2)^2 + (y1 - y2)^2) に設定しようとしましたが、例外 "... keypath ... not found in entity" で失敗します。
それらをすべてフェッチしてからコードでソートするのではなく、すでにソートされたオブジェクトをフェッチしたいと思います。
ヒントをいただければ幸いです。
iphone - iphoneコアデータフェッチリクエストソート
私はコアデータを使用しており、結果を正常に取得しています。コア データについていくつか質問があります。 1. レコードを追加すると、エンティティの末尾または先頭に追加されますか。2. 次のコードを使用してデータを取得しています。配列にはすべてのレコードが取り込まれています。しかし、レコードをエンティティに入力した順序と同じではありません。なぜ?デフォルトの並べ替えはどのような基準で使用されますか?
3. レコードを入力する方法、1、2、3、4........しばらくすると、最初に入力したレコード (最も古いデータ) を削除したいと考えています。古い2つのレコードを削除するようなもの。どうやってするの?
cocoa - コア データ: エンティティ内の属性の最小日付を見つけようとしています
Core Data の特定の属性で最も古い日付を見つけようとしています。Core Data Programming Guideで、まさにそれを行うことを目的とした例を見つけましたが、実行すると認識されない選択エラーが発生し続けます。
私のコード(Appleの例からの最小限の変更のみ):
そしてエラー:
1) NSCalendarDate は非推奨であり、2) count を呼び出していないことを考えると、これは奇妙です。
どんな助けでも大歓迎です!
iphone - iPhone OS:NSPredicateNsfetchrequestとコアデータを使用してランダムエンティティインスタンスを取得する
いくつかのランダムなインスタンスをフェッチしたい管理対象オブジェクトの大規模なコレクションがあるアプリで作業しています。
私の質問は、NSPredicateとNSFetchRequestを使用して複数のオブジェクトをランダムに返す方法はありますか?
データモデラーを使用してエンティティにNSFetchRequestを実際に追加できることを確認しました。これを使用してランダムフェッチを実行する方法はありますか?
また、乱数ジェネレーターの境界を設定できるように、テーブルの「カウント」を決定するための最良の方法は何でしょうか。
詳細が必要な場合はお知らせください。
ありがとう!
ニック
cocoa - CoreData モデルに格納された FetchRequests による変数置換
私は常に NSFetchRequests を完全にコード内で作成してきました。ここで、フェッチ リクエストを作成してモデルに格納するための Xcode GUI を見ています。
Xcode ドキュメントの例に従っています。モデルにフェッチ リクエストを追加しました。モデリング GUI で作成された述語は次のとおりです。
次に、次の 2 行でそのリクエストを取得します。
結果の NSFetchRequest の NSLog はこれを出力します:
.. これは、格納された FetchRequest が返される前に変数が置換されていないことを示します。
では、Xcode Data Modeling Fetch Request Predicate Builder GUI に入力されたテキストが、実行時に NSFetchRequest:fetchRequestFromTemplateWithName:substitutionVariables: によって置換されるように指定するにはどうすればよいでしょうか?
ありがとうございました!
ウッディ
iphone - iPhone:述語オブジェクトのindexPathを取得する
述語を使用してコアデータ内のオブジェクトを検索しています。必要なオブジェクトを正常に見つけることができますが、そのオブジェクトの詳細ビューをプッシュできるように、そのオブジェクトのindexPathも取得する必要があります。現在、オブジェクトを取得するための次のコードがあります。
したがって、オブジェクトを正しく配列に入れることができます。 しかし、どうすればそのオブジェクトをindexPathに変換できますか?
core-data - コアデータとページング
50,000 レコードのデータベースがあります。検索からレコードを取得するためにコア データを使用しています。検索では、簡単に 1000 件のレコードが返される可能性があります。コア データと uitableview を使用してこれらのレコードをページングするには何が必要ですか? 一度に 100 件のレコードを表示し、100 件のレコードを表示した後に [さらに読み込む] ボタンを表示したいと考えています。
core-data - リレーションシップを設定しようとすると、CoreData が「認識されないセレクター」でクラッシュするのはなぜですか?
「アイテム」と呼ばれる 1 つの CoreData エンティティに単純なツリー構造があります。
どのアイテムも別のアイテムの親になることができ、複数の子を持つことができます。
エンティティには次の関係があります。
childItems: To-Many、Destination: Item、inverse: parentItem。オプションのparentItem:宛先:Item、逆:childItems。オプション
Xcode で生成された Item.h を使用しています。
フェッチ リクエストは非常に簡単です。
関係を設定しようとすると、単にクラッシュします。なんで?
デバッグ出力:
他のプロパティを問題なく設定または取得できます。しかし、関係を変更しようとするとクラッシュします。私は何を間違っていますか?
iphone - NSFetchedResultsController への変更後に UITableView が DataSource を更新しない
がUITableView
入力されていNSFetchedResultsController
ます。最初のフェッチは正常に機能します。問題なく追加、削除、変更などを行うことができます..しかし、テーブルにユーザー定義の並べ替えを追加したいと考えています。を別のセットとNSFetchedResultsController
別の を使用するように変更することで、これを行っています。フェッチを変更するコードは次のとおりです。sortDescriptor
sectionNameKeyPath
このメソッドを呼び出すと、うまく機能します。テーブルは、新しいセクション情報と新しい並べ替えパラメーターを使用するために、すぐに並べ替えられます。しかし、データにアイテムを追加または削除すると、TableView はその情報を更新せず、クラッシュを引き起こします。fetchedResultsController 内のオブジェクトの総数のカウントを NSLog して、その増加 (および減少) を確認できますnumberOfRowsInSection
が、そこでの変化を監視するために戻り値を NSLog すると、メソッドが呼び出されますが、値は変化しません。次のクラッシュを取得します(追加用ですが、削除用も同様です)
無効な更新: セクション 2 の行数が無効です。更新後の既存のセクションに含まれる行数 (3) は、更新前にそのセクションに含まれる行数 (3) に、その数をプラスまたはマイナスした値と等しくなければなりません。そのセクションから挿入または削除された行数 (1 挿入、0 削除)。userInfo (ヌル)
アプリを再起動すると、追加されたアイテムが表示されるか、削除されたアイテムが表示されないため、データソースを正しく変更しています。
何か案は?