問題タブ [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 - インメモリ ストアと SQLite ストアの両方で NSManagedObject サブクラス エンティティを使用する
単一の NSManagedObject サブクラスを使用してアイテムを表現したいと考えています。ただし、多くの場合、ここで説明するアイテムは一時的なものであり、永続的なストアに保存することはできません。インメモリストアが正しいセットアップのようです。
ただし、ユーザーがアイテムを「保存」することを選択できる場合が数回あるため、そのアイテムを SQLite ストアに永続化したいと考えています。
2店舗必要みたいですね。2 つのコンテキストが必要ですか? メモリ内ストアから「保存された」永続ストアにアイテムを移動するための推奨される方法はありますか? 同じタイプの永続的な管理対象オブジェクトと非永続的な管理対象オブジェクトを混在させる場合に人々が推奨できるその他の提案や問題はありますか?
iphone - スレッドごとに複数のNSManagedObjectContextインスタンスがあっても大丈夫ですか?
スレッドごとに1つ持っている必要がありますが、それを超えて...もっと持っている必要がありますか?もっと持っているのは有害ですか?
たとえば、タブごとに1つのNSManagedObjectContextを持ち、その特定のタブに表示される永続ストア全体のサブセットを処理することを中心にアプリを構築したいと思います。
そうすれば、タブGUIに「その」コンテキストの通知をリッスンさせ、他の通知を無視させることができます。非同期ネットワーク呼び出しは、一度に1つのタブのコンテキストのみを変更します。
(注:iOS 3.2より前のクラスには大きなバグがあるため、NSFetchControllerを使用していません。これは3.0以降のアプリです)
NSManagedObjectContextの使用方法を誤解しましたか?もしそうなら、誰かが追加のNSManagedObjectContextインスタンスを使用する「良い」/「悪い」理由を指摘できますか?
更新:これは個別のコンテキストでは正常に機能しましたが、一時的な変更を処理するために1つのデータセットで複数のコンテキストを使用するように外挿しようとすると、すべてがひどく間違っています:そのトピックに関する質問を参照してください:一時的なNSManagedObjectsを作成/使用する方法は?
iphone - なぜnavigationControllerにプッシュしたものとは異なるViewControllerのインスタンスを取得するのですか?
インスタンス化してnavigationControllerにプッシュしたものとは異なるHistoryViewControllerのインスタンスを取得するのはなぜですか?
作成された別のインスタンスには、設定したプロパティがありません。
ProfileHomeViewController.m
HistoryViewController.h
HistoryViewController.m
iphone - 一時的なNSManagedObjectsを作成/使用する方法は?
Appleのドキュメントでは見つけられないシンプルで一般的なパターン:
- CoreDataストアをロードする
- 新しいデータをダウンロードし、メモリ内にオブジェクトを作成します
- 新しいデータの一部をストアに保存します(通常は「変更されていない新しいビット/ビットのみ」)
代わりに、私はこれらの選択肢を見つけることができますが、どれも正しくありません:
- メモリ内にオブジェクトを作成しないでください(これは、オブジェクトの優れた点をすべて破棄することを意味します。CoreDataの障害を回避する以外の目的を果たさない多くのNSDictionaryを使用してコードを記述します。一般的には機能しません)
- オブジェクトを作成しますが、不要なオブジェクトは削除します(Appleはドキュメントでこれを提案していますが、通知はひどく間違っています。保存しようとすると、保存しようとすると表示されますが、保存できない/できません)
- セカンダリコンテキストでオブジェクトを作成する(Appleはこれが正しいことを強く示唆していますが、上記を実行せずに、オブジェクトを一時コンテキストから実際のコンテキストに移動する方法を提供していないようです(作成したオブジェクトを削除してから、オブジェクトは多くの場合、新しいコンテキストの参照に接続する必要があり、保存は失敗するため、これは一般的には不可能です)
確かに、これほど難しいことではないでしょうか?
オブジェクトを手動でディープコピーするためにすべてのコードを作成する必要がある場合(すべてのフィールドとデータ構造を反復処理することにより)、そもそもCoreDataが存在するのはなぜですか?これは、CDが内部で提供する基本的な機能です。
私がこれまで取り組んできた唯一の解決策は、オプション2(Appleのドキュメントから)であり、Appleが最初に保存されるべきではなかったオブジェクトのNSNotificationsを送信するときに「推測」するカスタムヒューリスティックを使用します(ただし、Appleはとにかくnotoficationsを送信します)。それは恐ろしいハックです。
編集:説明:
Appleの通知を正しく配信する方法がわかりません。Appleのコードは、挿入を「更新」に変換し、「一時的なオブジェクト」を「削除」に変換するようです。「新しいオブジェクト」を聞くことができません。
iphone - CoreData: 保存されていないコンテキストからのオブジェクトのフェッチ
ManagedObject をコンテキストに挿入した後、後でフェッチしたいのですが、コンテキストを保存する前に (すべてのオブジェクトが挿入された後に保存します)。コンテキストが以前に保存されていない場合、これらのオブジェクトに関するフェッチで後でコンテキストをクエリしても何も返されないようです。最後にのみ保存する方法はありますか?(オブジェクトを配列または辞書に保存してクエリを実行できると思いますが、coredataがこれを行うと思いました)
objective-c - Core Data の管理対象オブジェクト コンテキストに保存されたオブジェクトの ID を取得する方法は?
私はこのコードを持っています:
管理オブジェクトコンテキストに挿入されたオブジェクトのIDを知りたいです。どうすればそれを取得できますか?
そのIDはそのオブジェクトの存続期間中同じままですか、それともこの下のsqlLiteデータベースに永続化され、フェッチ操作中に一意に識別するために使用できるものになります(私の最終的な目標)。
助けていただければ幸いです// :)
iphone - MapKit mapView から mapDetailView に managedObject を渡す方法
複数の注釈を持つ mapView から managedObject を、渡された managedObject の注釈を 1 つだけ持つ mapDetailView に渡そうとしています。これは、tableView から mapDetaiView にうまく機能します。どんな助けでも大歓迎です。私のコード...
iphone - TabBar iphone アプリの CoreData および Shared ManagedobjectContext
私は、coredata iPhone TabBar アプリで作業し、appdelegate managedObjectContext をすべてのビューとサブビューに渡します。あるインスタンスで、エンティティ A の新しいレコードを作成する必要があり、エンティティ A がユーザーによって保存されていない間に、別のエンティティ B を作成する必要があります同じ共有コンテキストを使用して。今、私の問題は、エンティティ B のコンテキストを保存すると、エンティティ A も保存されることです。ユーザーが保存したくないまで、エンティティAを保存したくありません。
エンティティBまたは何か他のものに対して別のコンテキストを作成する方法は1つしかありません....?
この問題を解決するのを手伝ってください。
ありがとう、
objective-c - コア データのコンテキスト間で非永続オブジェクトを共有しますか?
NSManagedObject
同じスレッドで実行されている2 つ以上のNSManagedObjectContext
オブジェクト間で を共有する方法があるかどうか疑問に思っていました。
次の問題があります。アプリケーション内のすべてのコードで共有される 1 つのメイン コンテキストと、発行するリモート フェッチ要求ごとに作成されるいくつかの異なるコンテキストがあります。(リモートでフェッチし、サーバーで見つかったすべてのオブジェクトを自分の に挿入するカスタム クラスを作成しましたNSManagedObjectContext
)。これらのフェッチ要求はNSURLConnection
、異なる時間に終了する可能性のあるオブジェクトを使用するため、同時に実行される可能性があります。同じリモート オブジェクトが異なる接続によってフェッチされると、コンテキストを保存してメインのオブジェクトとマージするときに重複が発生します。(つまり、リモート ID は同じで が異なるオブジェクトobjectID
)。
考えられる解決策の 1 つは、すべてのオブジェクトが作成されるとすぐに保存 (および永続化) することですが、まだ満たされていない可能性があり、保存操作中に検証されない関係がある可能性があるため、それはできません。
コンテキスト間でオブジェクトの同じ非永続インスタンスを共有できるメソッドを本当に楽しみにしています。誰かがこの問題に遭遇し、解決策を思いついた場合は、喜んでお知らせします!
objective-c - NSManagedObjectContext:自動更新かどうか?
NSManagedObjectContextの更新について理解する必要があります。RootViewにUITableViewControllerがあり、詳細ビューにUIViewControllerがあるUISplitViewがあります。データのある行をタップすると、いくつかのデータがラベルとUITextViewに読み込まれ、そこでそのフィールドを更新できます。
Ok。これは正しく機能し、説明が更新されます。また、誰かが行を削除したいと思うかもしれません:
だからここに私の問題があります:私のMOCの保存についての行にコメントすると、冒険は一時的に削除されます。アプリを終了して再度開くと、オブジェクトはまだそこにあります。これは、フィールドの更新では発生しません。textViewDidFinishEditingメソッドにもmocを保存する理由と必要があるかどうかを知りたいのですが。前もって感謝します。