問題タブ [nsmanagedobjectmodel]
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.
core-data - NSPersistentDocument のランタイム生成カスタム NSManagedObjectModel
Core Data を使用するドキュメント ベース (OS X) アプリがあるため、ドキュメントは NSPersistentDocument のサブクラスです。ユーザーがドキュメントを作成するとき、管理オブジェクト モデル内の特定のエンティティが持つ属性の数を決定する設定を指定します。たとえば、"Baseball Game" エンティティは、ドキュメントの作成時にユーザーが指定した数に応じて、4 ~ 9 のイニング属性を持つことができます。効率化のために、指定されたイニング属性を正確に含む野球ゲーム エンティティを使用して、ドキュメントの作成時に管理対象オブジェクト モデルが生成されます。したがって、5 イニングのドキュメントは、9 イニングのドキュメントとは異なる管理対象オブジェクト モデルを持ちます。
管理オブジェクト モデルを動的に設定するには、ドキュメントでオーバーライド-(id)managedObjectModel
する必要があります。これは些細なことであり、適切なイニング数でマネージド オブジェクト モデルを簡単に提供できます。ただし、ユーザーが保存されたドキュメント (不明なイニング数) を開くと、ドキュメントに管理オブジェクト モデルを与えるように再度求められます。-(id)managedObjectModel
. 私の難問は、自分自身を知らない場合、ドキュメントに何イニングあるのかをどのように伝えることができるかということです。マネージ オブジェクト モデルは実行時に作成および設定されるため、イニング数を示す何らかのプロパティをドキュメントに追加することをお勧めします。ドキュメントごとに NSUserDefaults に似たものを考えていましたが、そのようなものはありません。私が考えることができる唯一の方法は、明示的にイニング数を与えるエンティティ/属性を保存することですが、ドキュメントに管理オブジェクトモデルを与えるまでアクセスできません! これについての適切な方法は何ですか?
objective-c - swift_dynamicCastClassswift の無条件の問題
NSManagedObject
私は迅速に以下を持っています:
以下の関数で値を提供するクラスがあります。
Objective-C
クラスからこの関数を呼び出すと、すべて正常に動作します。私は次のように呼び出します:
そして、私はそこから続けることができます。Swift
次のようにクラスから呼び出すと:
私はswift_dynamicCastClassUnconditional
毎回取得します。私が間違っていることはありますか?同じ関数が で機能し、 で機能しObjective-C
ないのはなぜSwift
ですか? ブレークポイントを置いてSwift
、戻り値が有効な変数であることを呼び出しで確認できます! いくつかの方法Swift
でそれが欠けています。
私はこれについて以下を読んでみました:
私が行方不明になっているものは他にありますか?
objective-c - '+entityForName: nil は、エンティティ名を検索するための有効な NSPersistentStoreCoordinator ではありません
_managedObjectModel が使用されているときに、プログラムの後半で例外を取得します。以下は初期化コードです。
問題は、_managedObjectModel がガベージ メモリの場所を指していることです。GPR とアセンブリ コードを分析した後、ManagedObjectModel が適切に初期化されていたことがわかりましたが、スキーマからのコンテンツが読み込まれているときに、オブジェクト ポインターは、オブジェクトより前のランダムな場所、またはオブジェクトに割り当てられたメモリの間のどこかを指し始めます。 .
[_managedObjectModel->_entities allKeys] のようなものを使用して基になるコンテンツにアクセスしようとすると、スキーマ内のすべてのキーが取得されます。
誰もそのような問題に直面したことがありますか?
これはおそらくhttps://github.com/typhoon-framework/Typhoon/issues/138に似たものです
ios - Core Data - 新しいモデル名への移行
更新中のアプリがストアにあります。「lazy var managedObjectModel: NSManagedObjectModel」と「lazy var persistentStoreCoordinator: NSPersistentStoreCoordinator?」の両方で名前を変更するなど、多くのコア データの変更を行いました。
Core Data Migration を適切に使用して、既存のユーザーが更新をダウンロードしたときにアプリがクラッシュしないようにするにはどうすればよいですか?
古い:
新しい:
ios - コア データ モデルの複製バージョンを一時的に保持する方法
これは、説明するのが少し難しい質問です。これに対する答えを 2 週間以上探していましたが、このユース ケースの解決策を見つけることができませんでした。
核心的な詳細に入る前に、この画像を見てください。
ユーザーには、最初にメイン リストビューが表示されます。このビューに表示されるデータ (患者の記録) は、API から取得されます。ここで注意すべき重要な点の 1 つは、現在の日付のデータのみが取得されるということです。データベースには過去の日数と今後の日数のレコードがありますが、デフォルトではデータは現在の日付です。API を呼び出してデータを取得したら、それらからオブジェクトを作成し、それらのオブジェクトを Core Data に格納します。次に、コア データ モデルからそれらを取得し、テーブル ビューに表示します。
メイン リストの各患者レコードは、実際には小さなレコードのグループです。ユーザーがレコードをタップすると、サブ リストが表示され、すべての小さなレコードの詳細を確認できます。彼は、これらの小さな記録項目を編集、削除することもできます。
ここで助けが必要です。ユーザーがサブ リストにいる間、そのビュー内から日付を変更できます。そして、新しく選択された日付の小さなレコードの詳細が表示されます。これは、API を再度呼び出し、選択した日付をパラメーターとして送信し、その日付のデータを取得してサブ リスト ビューに表示することを意味します。
しかし、この日付変更操作全体がメイン リストのデータに影響を与えることはありません。つまり、サブ リスト内で日付が変更されても、メイン リストの現在の日付のデータは変更されません。ユーザーが [戻る] ボタンをタップしてメイン リストに移動した場合、古い現在の日付のデータは、ユーザーがそこを離れたときにすぐに利用できるようにする必要があり、サブ リスト ビューの新しいデータは、そのビューを離れると破棄されます。
もう 1 つのことは、新しいデータは一時的なものですが、ユーザーはそれらのレコードを編集できる必要があるということです。単なる表示用ではありません。そのため、それらをコア データに追加する必要があります。
私の質問は、サブ リスト内の新しい日付のデータを取得したら、元のデータ セットに影響を与えずにそのデータを一時的に保持する方法はありますか?
助けていただければ幸いです。
ありがとうございました。
ios - コアデータ「...という名前のクラスを読み込めません」
Core Data を学習していますが、問題があります。私は多くのことを試しましたが、xcodeは常に教えてくれます:
2015-04-25 21:20:44.057 CoreData2[8979:202376] CoreData: 警告: エンティティ '連絡先' の '連絡先' という名前のクラスを読み込めません。クラスが見つかりません。代わりにデフォルトの NSManagedObject を使用します。
これは、viewDidLoad から呼び出すメソッドです。
My Contacts.swift ファイル:
誰かが私が間違っていることを知っていますか? ありがとうございました!
ios - 別のバージョンで NSManagedObject 親エンティティを変更する
別のバージョンで NSManagedObject の親エンティティを変更する良い方法はありますか?
私が得たモデルバージョン1.1で言ってみましょう:
- anObject - 親エンティティなし
バージョン1.2で継承させたい
- object - バージョン 1.1 に既に存在し、プロパティ「objectID」を含む親クラス
親エンティティを変更すると、アプリケーションは次のようにクラッシュします。
キャッチされない例外 'NSInternalInconsistencyException' が原因でアプリを終了しています。理由: '管理対象オブジェクト コンテキストを作成できません: 永続ストア コーディネーターに永続ストアがありません。これは、永続ストアを追加するのを忘れたか、そうしようとして失敗したことを意味する可能性があります。
この回答では、新しいバージョンで別の名前の新しいエンティティを作成し、古いエンティティを削除することをお勧めします。
私の質問は、この種の問題に対する「よりクリーンな」解決策があるかどうかです。
プロジェクト/現在のモデルにマッピング モデルを追加するにはどうすればよいですか?
ios - 「NSInternalInconsistencyException」構成のエンティティは、モデルに既に存在している必要があります
NSIncrementalStore SubclassのNSManagedObjectModelに新しいエンティティを追加しようとしています。これを loadMetadata メソッドで実行していますが、最後の行でこの例外をスローし続けます。以下のコードを参照してください
「NSInternalInconsistencyException」構成のエンティティは、モデルに既に存在している必要があります
コード
ios - フレームワークに ManagedObjectModel を含める
NSManagedObjectModel
アプリケーションでサブクラス化されるように設計された抽象的なエンティティを含むフレームワークを開発しています。アプリケーションがフレームワーク内のエンティティをサブクラス化することは可能NSManagedObjectModel
ですか?