CoreData のオプションの対多関係は nil にはなりませんか? 質問する

CoreData のオプションの対多関係は nil にはなりませんか? 質問する

奇妙な点を発見したので、これを回避できるかどうか、ここにいる誰かに確認したいと思いました。基本的に、非常に単純な 2 つのエンティティ モデルがある場合:

ここに画像の説明を入力してください

Entity1との間には対多の関係がありますEntity2。関係はオプションで、両側の削除ルールとして nullify が使用されます。ただし、新しい を挿入すると、関係Entity1の値はchildrenではなく空のセットになりますnil

NSManagedObject *object = [NSEntityDescription
                           insertNewObjectForEntityForName:@"Entity1"
                           inManagedObjectContext:[self managedObjectContext]];
assert([object valueForKey:@"children"] != nil);

さらに、関係を明示的に設定することはできませんnil:

[object setValue:nil forKey:@"children"];
assert([object valueForKey:@"children"] != nil);

私はこれを新しい最小限のプロジェクトで検証しましたが、これが本当の実装の詳細であるようです。問題は、値nil(現在不明を表す) と空のセット (実際にはゼロとの関係) を区別できるようにしたいということです。CoreData は実際にこれをかなり直接的な方法でサポートしているのでしょうか? 現時点ではサポートしていないようです。つまり、モデルを表現する別の (より直接的ではない) 方法を見つける必要があるということです。

ありがとう、

J

ベストアンサー1

簡単に答えると、いいえです。常に空のセットが返されます。オブジェクト構造が完全に実現されているかどうかを知る必要がある場合 (これがあなたの目標だと私は推測します)、オブジェクトに属性を設定して、完全に実現されているかどうかを示す必要があります。

おすすめ記事