Прошло много времени с тех пор, как я использовал NSTokenField, но вот оно:
Ad. 2. у вас есть метод делегата NSTokenField с именем tokenField:completionsForSubstring:indexOfToken:indexOfSelectedItem:
, который должен возвращать массив возможных соревнований предоставленной подстроки. Это работает так, что вы устанавливаете свой класс в качестве делегата вашего NSTokenField и переопределяете этот метод, и в нем вы ищите в своей базе данных записи, которые соответствуют предоставленной подстроке, и возвращаете массив возможных совпадений. Какао должно сделать все остальное.
Ad. 1. еще раз NSTokenField
делегат может иметь метод с именем tokenField:displayStringForRepresentedObject:
, который позволяет отображать некоторый объект (например, адрес электронной почты) в любом формате, который вы хотите (чтобы объект был просто электронной почтой, и вы могли бы вернуть строку в формате " Имя "из этого метода, найдя имя для этого конкретного электронного письма в вашей базе данных).
Надеюсь, это поможет!