Я знаю, что это старый, но я думаю, что у меня есть ответ, и я хотел бы внести его, поскольку привязки для "значения" поля токена плохо документированы. На самом деле документация Apple вводит в заблуждение.
Если все, что вам нужно, это массив строк, хранящихся в основных данных и не имеющих отношения к representedObject
или делегатам полей токенов, вы действительно можете делать все в XIB и в своей xcdatamodel.
Первый шаг в переключении атрибута NSString вашего основного объекта данных на атрибут, который вы можете привязать к полю токена. Вам нужно сделать атрибут трансформируемого типа. Назовите это tokenStringArray
. Вы закончили с моделью данных. (И любой код, который обращается к этому атрибуту, теперь должен ожидать массив строк.)
Привязка значения поля токена требует подключения к контроллеру, который может доставить один объект с ключом контроллера, и этот единственный объект имеет путь ключа модели, который доставляет массив строк. Поэтому, если ваш контроллер массива выбирает одну сущность, у вас будет selection
для ключа контроллера и tokenStringArray
для пути ключа модели. Выберите «Постоянно обновляет значение», иначе сохранение может не сохраниться сразу.
Вот и все. Привязав трансформируемый атрибут tokenStringArray
к значению поля токена, пользовательские изменения в поле токена сохраняются.
[Для чего это стоит, у меня лично есть объектный контроллер, связанный с одной сущностью. Чтобы связать поле токена с основным атрибутом данных, кажется, что какой-то контроллер должен быть промежуточным, поэтому для меня это контроллер объекта. Если у вас есть таблица, в которой пользовательский выбор сущности должен заполнять поле токена, то вам следует использовать контроллер массива. Поле токена не может редактировать arrangedObjects
контроллера массива - оно может принимать и доставлять массив только из одного объекта.]