私は本当にこの2つのことで立ち往生しています。
私がやろうとしていること:
- 私のエンティティは単純です。それは「記録」です。
- 「名前(NSString)」と「親(relationShip)」があります
- 「親」はそれ自体、エンティティ「レコード」に接続します。
さて、「parentRecord」と「simpleRecord」を作成したいと思います。
私はそのコードでやろうとしています:
groupRecord = (record *)[NSEntityDescription insertNewObjectForEntityForName:@"record"
inManagedObjectContext:self.managedObjectContext];
groupRecord.name = GroupTextField.text;
[self saveContext];
それは「parentRecord」です。将来の使用のために保存し、「groupRecord」変数でキャッチします。
次に、「simpleRecord」を作成する必要があります。これはコードです:
record *newRecord = (record *)[NSEntityDescription
insertNewObjectForEntityForName:@"record"
inManagedObjectContext:self.managedObjectContext];
newRecord.name = textField.text;
[newRecord setMyParent:groupRecord]; //and it crashes here!
このコードを整理したので、「parentRecord」では*は行いません。[self saveContext];
variable から使用するだけですgroupRecord
。そして、「childRecord」ブロックに保存します。その後、すべて問題ありません。レコードはストレージに保存され、そこから読み取ることができます。
なぜそれが起こるのですか?最初に「parentRecord」を作成し、それを保存してから「childRecord」を作成したい場合はどうすればよいですか?
以前に保存したオブジェクトを使用できないのはなぜですか? NSManagedObjectContext は同じです - 何が問題なのですか?
私は「古典的な」SQL で十分ですが、Core Data は私の脳を殺しつつあります。
みんなありがとう。
アップデート:
見てください、saveContext はクラッシュする理由がありません。ここは:
- 親エンティティを作成します。
- appDelegate の変数に設定します。
- コンテキストを保存します (親の場合)。
- childEntity を作成します。
- appDelegate の変数からparentPropertyを設定します。アプリがクラッシュします!
と:
- 親エンティティを作成します。
- appDelegate の変数に設定します。
- ///////////コンテキストを保存します (親用)。
- childEntity を作成します。
- appDelegate の変数からparentPropertyを設定します。クラッシュはありません。
- 今回はコンテキストを保存します。
- 今は大丈夫です。
親プロパティ - プロパティの名前です。MOM ファイルの親の追加設定ではありません。
階層を持つエンティティを実行したい。Xcodeが私のために作成する追加のメソッドはありません-単なるプロパティです。