В моем приложении Cocoa Mac у меня есть экземпляр A
, который содержит неупорядоченный набор экземпляров B
, который в свою очередь имеет упорядоченный набор экземпляров C
. Экземпляр C
может быть только в одном экземпляре B
и B
только в одном A
.
Я хотел бы иметь неупорядоченный набор всех экземпляров C
, доступных в экземпляре A
. Я мог бы перечислять все случаи B
каждый раз, но это кажется дорогим для того, что мне нужно делать часто. Однако меня немного беспокоит, что отслеживание экземпляров C
в A
может стать громоздким и привести к несоответствиям, например, если экземпляр C
будет удален из B
, но не из A
.
Решение 1 -
Используйте NSMutableSet
в A
и добавляйте или удаляйте C
экземпляры всякий раз, когда я делаю ту же операцию в B
.
Раствор 2 -
Используйте слабые ссылки NSHashTable
в A
. При удалении C
из B
он должен исчезнуть и для A
.
Раствор 3 -
Используйте отслеживание значения ключа в A
, чтобы отслеживать изменения в B
, и соответственно обновите NSMutableSet
в A
.
Решение 4 -
Просто переберите все экземпляры B
, чтобы создать набор, когда мне это нужно.
Какой путь лучше? Есть ли другие подходы, которые я пропустил?
NB. Я не использую и не буду использовать CoreData для этого приложения.