Необязательные отношения CoreData к-многим никогда не могут быть nil?

Quirk, который я только что обнаружил, и хотел бы подтвердить с кем-нибудь здесь, можно ли это избежать. В принципе, если у меня есть очень простая модель сущности:

enter image description here

С отношением to-many между Entity1 и Entity2. Связь является необязательной, с нулевым значением как правило удаления с обеих сторон. Однако, если я вставляю новый 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

Короткий ответ - нет. Вы всегда получите пустой набор. Если вам нужно знать, полностью ли реализована структура объекта (моя догадка о том, какова ваша цель), тогда вы хотите установить атрибут объекта, чтобы сказать, полностью ли он реализован или нет.