Получение уникального идентификатора для каждого элемента содержимого NSArrayController - PullRequest
1 голос
/ 20 августа 2010

Я делаю собственное представление, которое я хочу совместить с привязками / основными данными и представлять коллекцию данных (например, NSTableView)

Есть ли способ, которым мое представление может ссылаться на определенное подмножествоэлементы в коллекции (кроме текущего выбора) после изменения пользователем?

Немного контекста:
Представление будет отображать количество перемещаемых пользователем блоков в 2D-пространстве,Каждое поле соответствует записи в модели.Несколько могут быть перемещены одновременно, и я не могу полагаться на то, что значение дельты одинаково для каждого блока (поэтому не нужно добавлять дельту для каждого выделенного объекта).

Я думаю, что ищу что-то вродеидентификатор, назначенный каждому элементу массива содержимого NSArrayController, так что представление может ассоциировать этот идентификатор с каждым блоком.Моей первой мыслью было использование индекса в массиве контента, но это могло быть испорчено отменой / повторением.Я мог бы создать подкласс NSArrayController и заставить его автоматически генерировать идентификатор для каждого элемента модели, но уже делает ли какао что-то подобное?Чувствуется, что я что-то упускаю.

Ответы [ 2 ]

1 голос
/ 21 августа 2010

Я должен был упомянуть, что первоначально я пытался сохранить каждый из элементов массива контента, сохраненных в представлении (как предлагает Питер), но сохранил их как ключи в словаре.

Объекты в представлении не делалине соответствуют ключам в словаре, поэтому я предположил, что это означало, что NSArrayController изменил прокси-объекты, которые он использует для обозначения объектов модели.

Однако оказалось, что NSDictionary копирует свои ключи, поэтому, похоже,бесполезно в ситуациях, когда вы хотите связать определенный экземпляр объекта с другим.

NSMapTable - его более гибкий родственник, и его можно настроить так, чтобы он не копировал свои ключи.

0 голосов
/ 20 августа 2010

Почему бы просто не обратиться к самим объектам? Вы можете хранить их в наборе или массиве, в зависимости от того, что подходит.

Если вам действительно нужен какой-то идентификатор: зачем? Что вы собираетесь с этим делать?

...