2012-04-30 2 views
2

У меня есть типичное приложение Mac CoreData, которое отображает мои объекты в NSTableView с помощью NSArrayController и панель справа для редактирования/отображения выбранного в данный момент элемента в NSTableView. У меня есть Entity (Pigeon) с изображением NSString (цвет), отображаемым в NSComboBox, так что пользователь может ввести свою собственную строку для цвета или выбрать ранее выбранный цвет из выпадающего списка. Это делается путем привязки значений содержимого NSComboBox к Pigeons.arrangedObjects.colour. Это sooooooo близко к тому, что я хочу, но поскольку это массив (а не набор) всех цветов, существующих для голубей, дублирующиеся значения перечислены в выпадающем списке NSComboBox. Поэтому, если, например, для цвета для одного голубого введен синий цвет, и он также выбран для второго голубя, тогда синий отображается в списке дважды.NSComboBox для отображения уникальных элементов из привязки объекта coredata свойства

Есть ли какой-то способ, как-то я могу отфильтровать это, чтобы удалить повторяющиеся значения? Я попытался сделать второй NSArrayController, который привязан к Pigeons.arrangedObjects.colour и установил NSPredicate, чтобы отфильтровать его, но я не могу найти NSPredicate для фильтрации повторяющихся значений. Я хочу использовать привязки для значений цветов, так что, когда приложение запущено, если цвет добавлен или удален (возможно, ошибка была сделана при вводе цвета), то раскрывающийся список обновляется, чтобы иметь только в настоящее время введенные значения цвета для голуби.

Каков наилучший способ не показывать эти повторяющиеся значения?

+1

+1 за упорное нежелание использовать американизированную 'color' в коде :-) –

+0

: DI думал об изменении его' color' только для задавая вопрос и решили, что было глупо :) – DonnaLea

ответ

2

Я нахожусь на своем телефоне и немного ленив, но я думаю, что вы ищете ключ-путь, который выглядит следующим образом: @ "@ distinctunionofobects.someproperty" ... или операторы ключа Google.

+2

Да, это лучшая идея. Я удалил свой ответ. Оператором keypath является '@ distinctUnionOfObjects', поэтому вы должны использовать' Pigeons.arrangedObjects. @ DistinctUnionOfObjects.colour'. –

+0

Спасибо большое, ребята. Спасибо Rob за то, что он точно указал, как использовать '@ distinctUnionOfObjects'. – DonnaLea

Смежные вопросы