問題タブ [nsmanagedobject]
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.
objective-c - NSManagedObjectのNSPasteboardタイプ
アプリケーションの2つのテーブルビュー間でNSManagedObjectへの参照をドラッグする必要があります。NSManagedObjectへの参照を格納するために推奨されるNSPasteboardタイプは何ですか?
私の現在の解決策は、オブジェクトのNSManagedObjectIDのURIRepresentationをNSPasteboardTypeStringに格納することです。もっとエレガントな解決策があるのではないかと思います。
cocoa - NSManagedObject サブクラスの問題
皆さん、NSManagedObject のサブクラスを取得しました。awakeFromInsert と awakeFromFetch では、特に NSTimer を開始する初期化メソッドを呼び出しています。
ここで、タイマーを無効にする場所が必要です。ただし、dealloc、finalize、didTurnIntoFault、prepareForDeletion、および willTurnIntoFault は呼び出されません。
ドキュメントによると、これらのメソッドはすべて、オブジェクトがメモリからクリアされるときに呼び出される必要があります。それらはどれもありませんが、すべてのデータは永続ストアに保存されます。なぜ、どのように、私は困惑しています。
オブジェクトのライフサイクル中にこれらのメソッドが呼び出されない可能性があることはありますか?
objective-c - Core Data に負の整数を格納する
管理対象オブジェクト モデル インスタンスの属性に正の整数を適切に割り当てて取得できます。ただし、この属性に負の整数を割り当てると、数値「4294967295」がコア データ永続ストア (xml ファイル) に記録されます。したがって、アプリケーションが再ロードされ、管理対象オブジェクトが再インスタンス化されると、属性は「4294967295」になります。
この属性は、DataModel で Integer 32 型として指定されており、「最小値」は「-12」です。これは、負の整数を文字列として保存することに関係していると思います。このコードは、同じ「4294967295」を生成します。
Core Data に負の整数を格納する適切な方法は何ですか?
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 - @dynamic を使用する一般的なケースは何ですか?
@synthesize と @dynamic の違いについては以前の投稿があります。
@dynamic の普段の使い方という観点から、dynamic についてもっと知りたいです。
通常、NSManagedObject と一緒に @dynamic を使用します。
@dynamic の理解によると、実際にはコンパイル時に getter/setter は生成されないため、独自の getter/setter を実装する必要があります。
私の質問は、この NSManagedObject の場合、スーパークラス NSManagedObject のゲッター/セッターの大まかな実装は何ですか?
上記の場合を除いて、 @dynamic を使用する他のケースはいくつありますか?
ありがとう、
objective-c - 管理対象オブジェクトの保持-より一般的な保持オブジェクト
管理対象オブジェクトに関する簡単な質問。
管理対象オブジェクト(オブジェクト1:TableViewConbtroller内)を使用して配列を作成し、それらのオブジェクトの1つを別のクラス/オブジェクト(オブジェクト2:TableCell)に渡します。
元の配列は、元の呼び出し元クラスに保持されている必要があります。次に、オブジェクト2が解放されます。これは、オブジェクト2でのオブジェクトへの参照が解放されたのと同様に、配列内のその特定のアイテムも解放されることを意味しますか?
「オブジェクトが解放されました」というエラーが発生したときに、ManagedObjectsの操作方法をよりよく理解しようとしています。
[編集]いくつかの実験の後、私は次のシナリオに出くわしました:私はメインのAppDelegateを持っています。別のクラスで、ManagedObjectContextを取得するためのAppDelegateを作成します。
クラスが終了し、それを解放すると、クラス'appDelegate'の変数も解放されます。ただし、ManagedObjectContextは閉じられ、今後それを使用しようとするとクラッシュが発生することは明らかです。では、appDelegateをリリースしないでおく必要がありますか?
これは、オブジェクトが別のクラスから使用されている状況で、いつどのように解放するかについて、上記と同じ質問になります。私はそれを置く方法は、あなたがオブジェクトを所有しているときと所有していないときを知る方法だと思います。
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
-私が見逃しているより簡単な(より確実な、または組み込みの)方法はありますか?私がドキュメントで見つけたものは何も示唆していませんでした。
core-data - NSFetchRequest データをビューに?
CoreData API を使い始めたばかりで、いくつかのチュートリアルに従っています。オブジェクトの保存と取得の基本は理解できましたが、MVC に関してすべてのピースを接続するのに苦労しています。
NSManagedObject から文字列を取得するいくつかのテキスト レイヤーなど、CoreAnimation でいくつかのものを描画する CustomView があります。基本的な CoreData アプリケーション テンプレートから始めたので、appDelegate で managedObjectContext などが宣言されました。CoreData スタックからビューにデータを取得する方法がわかりません。ところで、これはすべてコードであり、インターフェイス ビルダーではありません。
私の質問は、純粋な MVC の方法でアプリを構築したい場合、スタックからビューにデータを取得するにはどうすればよいですか? たとえば、初期化された NSManagedObjectContext へのビュー アクセスをどのように許可すればよいですか?
私は Cocoa Design Patterns を読んでいますが、MVC に関してはちょっと苦手です。私はそれがかなり一般的な質問であることを知っていますが、誰かが「デリゲートを設定し、ポインターをつかむ...」と言うことができれば、それは素晴らしいことです!
前もって感謝します!
iphone - CoreDataの問題:-[NSManagedObject setValue:]:認識されないセレクターがインスタンスに送信されました
昨日CoreDataを使い始めたばかりで、夢中になっています:( CoreDataを使用するプロジェクトを作成しました(ボックスにチェックマークを付けて-CoreDataを使用します)。エンティティを作成してから、すべてのエンティティのNSManagedObjectクラスを作成しました(エンティティの「setter」および「getter」メソッド)。
ここで、これらすべてのクラスをAppDeletegateに#インポートし、applicationDidFinishLaunchingメソッドに書き込みました。
(サブスクリプションは、アプリケーションのエンティティの1つです)
これを実行すると、このエラーが発生します
[NSManagedObject setTitle:]:認識されないセレクターがインスタンス0x6160550に送信されました
なぜこれが起こっているのか分かりません。助けてください!!!みなさん、よろしくお願いします!
SubscriptionsSubscriptions.hのヘッダーを追加します
@interfaceサブスクリプション:NSManagedObject {
}
@property(nonatomic、retain)NSString*タイプ;
@property(nonatomic、retain)NSDecimalNumber*読み取り;
@property(nonatomic、retain)NSString*タイトル;
@property(nonatomic、retain)NSString*コード;
@property(非アトミック、保持)NSDecimalNumber*新規;
@終わり
何も変更しませんでした。Xcodeが作成したのと同じです。
cocoa - NSUndoManager、Core Data、および選択的な元に戻す/やり直し
私は、ツリーに似た管理対象オブジェクトのかなり大きな階層を持つコア データ アプリケーションに取り組んでいます。
基本オブジェクトが作成されると、いくつかの子オブジェクトが作成され、それらが独自の子オブジェクトを作成します。これらの子オブジェクトはそれぞれ、NSURLConnections を使用して情報を収集できます。
ここで、managedObjectContext の undoManager で元に戻す/やり直しをサポートしたいと思います。問題は、ユーザーがベース オブジェクトを作成し、そのアクションを元に戻そうとすると、ベース オブジェクトが削除されないことです。代わりに、1 つ以上の子オブジェクトが削除される場合があります。明らかに、この種のアクションは予測不可能で望ましくありません。
ということで、アンドゥ登録をデフォルトで無効にしてみました。disableUndoRegistration:
これは、managedObjectContext で何かが変更される前に呼び出すことで行いました。次に、ベースオブジェクトの作成などのベース操作の前に登録の取り消しを有効にし、後で登録を再度無効にします。
元に戻そうとすると、次のエラーが表示されます。
undo: NSUndoManager 0x1026428b0 が無効な状態です。ネストされた undo グループが多すぎる状態で undo が呼び出されました
考え?