問題タブ [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.
iphone - 他のビューの managedObjectContext
私はついにコアデータを機能させ、それを理解し始めました。これまでのところ、コア データが有効になっているウィンドウ ベースのアプリで遊んでいて、アプリのデリゲート ファイル内で遊んでいます。
しかし、UIView サブクラスがある場合など、アプリ デリゲートの外部から managedObjectContext にアクセスするにはどうすればよいでしょうか?
iphone - コア データ: 関係を確立しようとする不正な試み + (null) コンテキスト
バックグラウンド スレッドでデータを解析し、新しいエンティティを挿入し、他の既存のエンティティとの関係を設定しています。
「異なるコンテキストでオブジェクト間の関係を確立しようとしています」というエラーが表示されることがあります。
これについて詳しく読んだ後、バックグラウンド スレッドで新しい ManagedObjectContect を作成し、それを使用して新しいエンティティを挿入し、関係を設定しています。この新しい ManagedObjectContext のみをバックグラウンド スレッドで使用するように注意しています。既存のオブジェクトとこれらの新しいオブジェクトの 1 つとの関係を設定するために既存のエンティティを見つける必要がある場合、[moc objectWithId:id] を呼び出して、新しい moc を使用して既存のオブジェクトをフェッチします。ただし、まだエラーが発生しています。
イライラして、私は物事を印刷し始めました。リレーションシップを設定する直前に、各 NSManagedObject の managedObjectContext プロパティを出力すると、「(null)」が出力されることがあります。これは、問題が発生したときのようです。
誰が私が間違っているのか教えてもらえますか? オブジェクトに (null) モックが時々あるのはなぜですか?
あなたが与えることができるどんな助けにも感謝します!
cocoa - NSManagedObject サブクラスの問題
皆さん、NSManagedObject のサブクラスを取得しました。awakeFromInsert と awakeFromFetch では、特に NSTimer を開始する初期化メソッドを呼び出しています。
ここで、タイマーを無効にする場所が必要です。ただし、dealloc、finalize、didTurnIntoFault、prepareForDeletion、および willTurnIntoFault は呼び出されません。
ドキュメントによると、これらのメソッドはすべて、オブジェクトがメモリからクリアされるときに呼び出される必要があります。それらはどれもありませんが、すべてのデータは永続ストアに保存されます。なぜ、どのように、私は困惑しています。
オブジェクトのライフサイクル中にこれらのメソッドが呼び出されない可能性があることはありますか?
iphone - NSManagedObjectContext 内での SIGABRT のデバッグ -save:
内部から NSManagedObjectContext -save: 次のメッセージが表示されます:
アサーションが失敗しました: (_Unwind_SjLj_Resume() can't return)、関数 _Unwind_SjLj_Resume、ファイル /SourceCache/libunwind/libunwind-24.1/src/Unwind-sjlj.c、326 行目。
プログラム受信信号:「SIGABRT」。
警告: /Developer/Platforms/iPhoneOS.platform/DeviceSupport/4.2.1 (8C148)/Symbols/Developer/usr/lib/libXcodeDebuggerSupport.dylib のシンボルを読み取れません (ファイルが見つかりません)。
これは、Data と対 1 を持つ Sample と to-man を持つ Run と to-man を持つ Experiment オブジェクトを削除すると発生します。また、Experiment には to-many と to-many があり、to-many には to-many があり、Display には to-many があります。グラフの周期的な性質を指摘するためにこれに言及します。モデルの単純化されたグラフは次のとおりです。
ユーザーが操作する最上位のエンティティを実験します。Experiment には、複数の Run オブジェクトが含まれます。Run は、特定の時刻に開始し、後で終了するデータのコレクションです。データは複数のソースから同時に収集できるため、実行ごとにソースごとにサンプルがあります。実験にはデータが含まれており、このデータを表示して操作する必要があります。したがって、各実験にはいくつかのページ オブジェクトがあり、各ページにはいくつかのディスプレイ (グラフ、メーターなど) が含まれます。ディスプレイは、実験に属する実行のサブセットを表示するように構成されています。そのため、Experiment には数十の実行が含まれる場合がありますが、そのページの 1 つは一度にそれらの実行のいくつかしか表示しません。表示エンティティは、このリストを維持します。ディスプレイはそうではありませんビュー。ビューは Display オブジェクトを参照し、Display オブジェクトへの変更が通知されます。
以前は削除規則を使用していましたが、これらすべてのクラスの -prepareForDeletion メソッドと組み合わせて「アクションなし」の削除規則に切り替えました。この変更は違いはありませんでした。どちらの場合も、エラー メッセージは同じです。
興味深いことに、アプリを再起動すると、削除対象としてマークされたすべてのオブジェクトが削除されています。
また、Experiment に Run オブジェクトがない場合、削除は問題なく機能します。さらに言えば、Experiment から 1 つの Run を削除することもできます。
誰かがこのようなことを見て、何が原因であるかについてアドバイスを提供できることを願っています. または、iOS 4.2.1 用の libXcodeDebuggerSupport.dylib の入手方法に関するアドバイスがあれば、それも役立つかもしれません。
更新:ここにあるアドバイスに従い、Xcode で iOS 4.2.1 の libXcodeDebuggerSupport.dylib を見つけることができました。しかし、これは問題の診断にはまったく役立ちませんでした-これは持続します。
更新 2: unwind-sjlj.c のバージョンを少し読んでダウンロードした後、キャッチされない例外のようなものを扱っているようです。これがどのように役立つかわかりません...
更新 3:カムチャッカのおかげで、おそらく数日前にすべきだったことを実行しました。「Objective-C の例外で停止する」をオンにしました。これにより、削除されたオブジェクトへの参照がまだ保持されていることがわかりました。さらに悪いことに、削除されたオブジェクトを観察しているキー値でした。この修正された問題を修正すると、-prepareForDeletion メソッドではなく削除ルールを使用するように戻すことができました。
iphone - 一見正常な NSString フィールドで Core Data がクラッシュする
理解できない別の奇妙なバグがあります。
以下のコードで tableviewcell を作成しようとしています。
問題は、説明の値を除いて、ラベルに任意の値を設定できることです。それを行うとすぐに、次のクラッシュが発生します。
2010-12-22 16:07:13.165 iDoms[24086:207] CoreData: 注釈: 障害がデータベースから実行されました: 0x8b16dd0 プログラムがシグナルを受信しました: 「EXC_BAD_ACCESS」。警告: 以前に選択したフレームを復元できません。データ フォーマッターは一時的に利用できません。「続行」後に再試行します。(現時点で dlopen を呼び出すのは安全ではありません。)
スタックに 62820 の明細項目があります。私はこれを理解するためにどこから始めるべきか分かりません。私は Java に慣れており、Objective-C はこれまでのところ、小さな奇妙なバグに関しては本当に悪夢でした。
Article クラスは次のようになります。
と
データベースにはデータが含まれており、特定のフィールドには文字列 "Test1" だけが含まれています。いつものように、どんな助けも本当に感謝しています!
iphone - 2 つの異なるコア データ モデル間でエンティティを共有する方法
2 つの異なるコア データ モデル間でエンティティを共有する方法を知りたいですか?
たとえば、「 WorldData」とその「CountryData 」を記述する「 Universe」モデルがあります。もう一方には、「 CountryData 」を含む「 HumanData 」を記述する「人口」モデルがあります。
私は間違いなくモデルを分離したいと思っています。
前もって感謝します。
objective-c - スレッドで ManagedObjectContext を使用する方法
これはおそらく非常に単純なアプリケーションですが、Objective-C (Java から来た) は初めてで、メモリ管理全体と "EXC_BAD_ACCESS" エラーが私の心を痛めています。
Core Dataを使用した通常のNavigationController iPhoneアプリがあります。AppDelegate で NSManagedObjectContext が作成され、RootViewController に渡されます。ビューはメインスレッドから直接検索されてテーブルにデータが入力されますが、それはうまく機能しているようです。
アプリはある種の RSS タイプのリーダーなので、アプリが起動するとすぐにスレッドを起動して新しいデータを取得し、ビューを更新します。
問題は、これが機能しないことです。DataManager では、最初に設定を取得する必要があり、NSEntityDescription が作成されるとすぐに「EXC_BAD_ACCESS」を取得します。
別のスレッドとメモリプールで実行した結果、ManagedObjectContext へのポインタが間違っていると思います。それで、それが問題である場合、どのようにそのようなアプリケーションを作成しますか)、彼がスレッドする元の ManagedObjectContext 形式への参照を取得するにはどうすればよいですか?
[編集]私も使ってみました
(他の投稿で示唆されているように)doUpdateDataで、しかしそれは同じ結果をもたらします
cocoa - 一時URIからの永続的なNSManagedObjectURI?
子オブジェクトのURIを格納するNSManagedObjectサブクラスがあります。子オブジェクトが最初に作成されたときに最初に一時URIを格納し、保存する前にNSManagedObjectContext-willSave
を呼び出すように実装する-obtainPermanentIDsForObjects
ため、永続IDのみが保持されます。
しかし、私が遭遇している問題は、他のインスタンスも一時的なURIを格納していることです。-willSave
同じ子を持つ別のオブジェクトが受け取った直後にメッセージを受け取ると、別の間違った永続的なURIも呼び出して取得-obtainPermanentIDsForObjects
し、次のような後続のCoreData障害エラーが発生します。
CoreData could not fulfill a fault for '0x102e4c110 <x-coredata://E17EE19B-E7F3-4102-ACFF-3E6F8BE8B104/MyEntityName/p2>'
NSManagedObjectの古い一時的なURIRepresentationから、すでに生成されている新しい永続的なURIRepresentationに移行する方法が必要です。
私の最初の考えは、使用する前に自分の辞書を保存<temporary URI,permanent URI>
し、それを調べることです-obtainPermanentIDsForObjects
-私が見逃しているより簡単な(より確実な、または組み込みの)方法はありますか?私がドキュメントで見つけたものは何も示唆していませんでした。
iphone - IPhone - コア データでのクラッシュ - 複数の管理対象オブジェクト コンテキスト
だから、私は複数のスレッドでコアデータを使用しています。それぞれが独自の管理対象オブジェクト コンテキストを取得します。認識されないセレクター例外が発生するので、何か間違ったことをしていないか気になります。クラッシュは明らかに「mergeChanges」メソッドに関連しています。助けていただければ幸いです。
編集 myManagedObjectContext が割り当て解除されたオブジェクトを返すことが問題のようです。それはどうしてですか?
キャッチされていない例外 'NSInvalidArgumentException' が原因でアプリを終了しています。理由: '-[NSKeyPathExpression _processReferenceQueue:]: 認識されないセレクターがインスタンス 0xa65940 に送信されました'
core-data - NSFetchRequest データをビューに?
CoreData API を使い始めたばかりで、いくつかのチュートリアルに従っています。オブジェクトの保存と取得の基本は理解できましたが、MVC に関してすべてのピースを接続するのに苦労しています。
NSManagedObject から文字列を取得するいくつかのテキスト レイヤーなど、CoreAnimation でいくつかのものを描画する CustomView があります。基本的な CoreData アプリケーション テンプレートから始めたので、appDelegate で managedObjectContext などが宣言されました。CoreData スタックからビューにデータを取得する方法がわかりません。ところで、これはすべてコードであり、インターフェイス ビルダーではありません。
私の質問は、純粋な MVC の方法でアプリを構築したい場合、スタックからビューにデータを取得するにはどうすればよいですか? たとえば、初期化された NSManagedObjectContext へのビュー アクセスをどのように許可すればよいですか?
私は Cocoa Design Patterns を読んでいますが、MVC に関してはちょっと苦手です。私はそれがかなり一般的な質問であることを知っていますが、誰かが「デリゲートを設定し、ポインターをつかむ...」と言うことができれば、それは素晴らしいことです!
前もって感謝します!