問題タブ [nsmanagedobjectcontext]

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 投票する
1 に答える
1203 参照

iphone - insertNewObjectForEntityForName: inManagedObjectContext: NSNumber バグを返す?

私は CoreData に比較的精通しており、数年間ほとんどまたはまったく問題なく使用しています。突然、エラーに唖然としました。一生、理由が分からない

NSNumber のある種の奇妙なインスタンスが突然返されます。GDB は、返されたオブジェクトが NSManagedObject の正しいカスタム サブクラスのものであると言いますが、NSManagedObject 自体の説明を出力しようとすると、次のエラーが発生します。

さらに奇妙なのは、setValue:forKey: を使用していくつかの関係と属性を設定できることです。すべて問題ありません。しかし、一度特定の関係を設定しようとすると、次のエラーが発生します。

誰もこれまでにこのようなことに遭遇したことがありますか? 私はすべてのターゲットをきれいにし、すべてを再起動しようとしましたが、モデルを問題の関係に変更することさえ、対多ではなく対1です。何も違いはありません。

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

iphone - insertNewObjectForEntityForName:inManagedObjectContext: NSNumber バグを返す?

私は CoreData に比較的精通しており、数年間ほとんどまたはまったく問題なく使用しています。一生、理由が分からない

NSNumber のある種の奇妙なインスタンスが突然返されます。GDB は、返されたオブジェクトが NSManagedObject の正しいカスタム サブクラスのものであると言いますが、NSManagedObject 自体の説明を出力しようとすると、次のエラーが発生します。

さらに奇妙なのは、setValue:forKey: を使用していくつかの関係と属性を設定できることです。すべて問題ありません。しかし、特定の関係を設定しようとすると、次のエラーが発生します。

すべてのターゲットをクリーンアップすることから、Mac と iPhone の両方を再起動することまで、問題の関係が対多ではなく対 1 になるようにモデルを編集することまで、あらゆることを試しました。何をしても同じ問題が発生します。誰もこれまでにこのようなものを見たことがありますか?

0 投票する
3 に答える
4527 参照

iphone - CoreDataのパフォーマンスdeleteObjectと管理対象オブジェクトのコンテキストの保存

CoreDataデータベース内のオブジェクトを一括削除するための最良の方法を見つけようとしています。

親子関係のあるオブジェクトがいくつかあります。時々、既存の子オブジェクトをすべてクリアし、新しいオブジェクトをCore Dataに追加して、親オブジェクトを「更新」する必要があります。この操作の「すべて削除」の部分は、私が問題にぶつかっているところです。これを実現するには、子をループして、それぞれに対してdeleteObjectを呼び出します。

15,000個のオブジェクトを削除する場合、NSManagedObjectContext:Save呼び出しの後、すべてのdeleteObject呼び出しに続く呼び出しが非常に遅いことに気付きました。

この通話をスピードアップするにはどうすればよいですか?保存操作中に、パラメーターを別の方法で設定したり、モデルを別の方法で設定したりすることで、認識して回避できることがありますか?この操作中にもメモリが急増することに気づきました。本当に「削除*」したいだけです。

ありがとう。

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

iphone - 詳細ビューからコア データ エントリを削除するにはどうすればよいですか?

Apple のコア データ レシピのサンプル コードに似たアプリを使用しています。アップルの連絡先アプリのように、詳細ビューからエントリを削除できるようにしたい。

以下のコードは、選択したエントリではなく、最初のエントリを削除しています。私が間違っているのかわかりません。

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

core-data - NSManagedObjectContext はオブジェクトを自動的に再フォールトできますか?

ユーザーが同じデータを読み取っている間に、バックグラウンド スレッドがコア データ オブジェクトを更新できるようにするアプリケーションを作成しようとしています。

これに対する私のアプローチは、複数の NSManagedObjectContext を使用し、バックグラウンド スレッドが-save:操作を行う前に、ユーザーが現在作業しているオブジェクトをフェッチし、そのすべてのプロパティと関係に対して再帰的に障害を発生させることです。このようにして、既に更新された値を見ることなく、ユーザーが NSManagedObjectContext で操作できるすべてのオブジェクトを取得します。

しかし、これは NSManagedObjectContext がメモリ使用量が高すぎるなどと判断できない場合にのみ機能し、(NSManagedObject 関係以外で) 私が明示的に参照していないオブジェクトに障害を起こし始めます。

問題は、NSManagedObjectContext は、私の側からの介入なしに、オブジェクトを再フォールトする必要があると判断できるかということです。

あなたの努力に感謝します、マーカス

0 投票する
3 に答える
991 参照

iphone - NSManagedObjectContext は自動保存されていますか、それとも NSFetchedResultsController のキャッシュを見ていますか?

メイン テーブル ビュー コントローラーで NSFetchedResultsController を使用する iPhone アプリを開発しています。メイン テーブル ビュー コントローラーの viewDidload で次のように作成します。

次に、後続のビューで、コンテキストに新しいオブジェクトを作成します。

TestObject にはいくつかの関連オブジェクトがあり、これらを同じ方法で作成し、提供された add...Objects メソッドを使用して testObject に追加します。

次に、コンテキストを保存する前にキャンセルを押してメイン テーブル ビューに戻ると、期待どおりに何も表示されません。ただし、アプリを再起動すると、コンテキストで作成したオブジェクトがメイン テーブル ビューに表示されます。どうして?最初は、NSFetchedResultsController がキャッシュから読み取っていたためだと思いましたが、ご覧のとおり、テストのためにこれを nil に設定しました。また、[context hasChanges] は、再起動後に true を返します。ここで何が欠けていますか?

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

iphone - アプリケーションでNSManagedオブジェクトが失われる

私は楽しい小さなiPhoneアプリでかなりの仕事をしてきました。ある時点で、Persistantストアから多数のプレーヤーオブジェクトを取得し、それらを画面に表示します。新しいプレーヤーオブジェクト(カスタムUIButtonのみ)を追加したり、選択したプレーヤーを削除したりするオプションもあります。

ただし、どの「プレーヤー」が表示されているかをアプリが保存していないという点で、メモリ管理の問題が発生していると思います。

例:4人のプレーヤーが表示されているので、それらをすべて選択してから、すべて削除します。それらはすべて消えます。しかし、アプリケーションを終了してから再度開くと、それらはすべて再び存在します。彼らが去ったことがないかのように。したがって、私のコードのどこかで、それらは「実際に」削除されていません。

したがって、このスニピット(viewdidLoadメソッド内)では、永続ストアからプレーヤーを取得し、不要なオブジェクト(boolValueがNOのオブジェクト)を削除して、残りを保持します。これはうまくいきます、私はかなり確信しています。問題は、プレイヤーをどこから削除するかだと思います。そのコードは次のとおりです。

2番目のコードスニペットの大きな部分は、currentMultiPlayerに対してNOに設定したことです。いいえいいえいいえいいえいいえ、ビューが読み込まれたときに戻ってはいけません。私がそう言うまでは。コードの他の関連部分でYESに設定されているものはありません。それは私に考えさせます...おそらく彼らは救われていません。おそらくそれは保存されません、おそらくそれらのオブジェクトはもう管理されていないので、それらは保存されません。NSManagedオブジェクトの存続期間(比喩的に)はありますか?Players配列は、「viewDidLoad」メソッドで設定したものと同じであり、SelectedPlayersは、選択されたプレーヤー、NSManagedObjectsへの参照を保持します。アレイからそれらを削除することと関係がありますか?私はとても混乱しているので、いくつかの洞察をいただければ幸いです!!

0 投票する
5 に答える
25106 参照

cocoa - NSManagedObjectをあるコンテキストから別のコンテキストにコピーまたは移動するにはどうすればよいですか?

私は、かなり標準的なセットアップであると想定しています。1つのスクラッチパッドMOCは決して保存されず(Webからダウンロードされたオブジェクトの束を含む)、もう1つの永続的なMOCはオブジェクトを永続化します。ユーザーがscratchMOCからオブジェクトを選択してライブラリに追加する場合、1)オブジェクトをscratchMOCから削除してpermanentMOCに挿入するか、2)オブジェクトをpermanentMOCにコピーします。Core Data FAQには、次のようなオブジェクトをコピーできると書かれています。

(この場合、context2はpermanentMOCになります。)ただし、これを行うと、コピーされたオブジェクトに障害が発生します。データは最初は未解決です。後で解決されると、すべての値がnilになります。元のmanagedObjectのデータ(属性または関係)は、実際にはコピーまたは参照されません。したがって、このobjectWithID:メソッドを使用することと、insertNewObjectForEntityForName:を使用して完全に新しいオブジェクトをpermanentMOCに挿入することの違いはわかりません。

パーマネントMOCで新しいオブジェクトを作成し、古いオブジェクトから各キーと値のペアを手動でコピーできることはわかっていますが、そのソリューションにはあまり満足していません。(私はこの問題を抱えているさまざまな管理対象オブジェクトをいくつか持っているので、コピーを作成して更新する必要はありません。開発を続けるにつれて、それらすべてのメソッドを作成します。)より良い方法はありますか?

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

iphone - Iphone - 管理対象オブジェクトのコンテキストが正しく保存されない

理由は何でも

ビューコントローラー(ドリルダウンテーブルビューを介してアクセス)に実装すると、情報が適切に保存されませんか? 私は最初からモックを渡しています(ルートビューはテーブルビューに引き渡し、テーブルビューはuiviewを呼び出すまで再帰的にそれ自体に渡します)、テーブルビューをポップ/プッシュすると、テーブルに追加が表示されます(残念ながらviewWillAppearのreloadDataはありません更新したい)。

代わりに managedObject を渡して、そこからコンテキストを取得する必要がありますか?

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

iphone - Core-Data: NSLog 出力に「フィールド」が表示されない

NSFetchRequest によって返される配列の NSLog の出力がわかりません。

データベースを読み取って内容を配列に配置し、配列をループしてから内容を NSLog で出力しています。ログファイルの出力がよくわかりません。以下のコード:

ログ ファイルの内容:

これは何を意味するのでしょうか?:

データベースからフィールドの内容を実際に見たい。

データベースには 15 のレコードがあり、各レコードには 12 のフィールドがあります。私の基本的な理解から、私のstories配列は個々のフィールドではなく、データベースからのレコード全体を保持しているようです。これを達成するには 2D 配列が必要かもしれません。

最終的には、配列をループ処理して、各フィールドの XML タグを作成したいと考えています。でも一歩ずつ…

前もってありがとう、スティーブン