Когда я использую ключ контроллера :ранжированный объект и путь к ключу модели: @ diverUnionOfObjects.customerName, я получаю сообщение об ошибке, сообщающее, что объект не соответствует KVC !!!
2011-06-28 00:22:03.212 FinancingPro[459:903] [<NSManagedObject 0x10053e1a0> valueForUndefinedKey:]: the entity Customer is not key value coding-compliant for the key "@distinctUnionOfObjects".
Вы привязаны к объекту модели, а не к контроллеру массива. arrangedObjects
- это свойство контроллера массива, а @distinctUnionOfObjects
- это специальный ключ, поддерживаемый только массивами и наборами, поэтому вам необходимо привязать его к контроллеру массива.
Обратите внимание, что ваш фильтр @distinctUnionOfObjects
будет применяться только к этому столбцу, но не к другим столбцам. Таким образом, вы фильтруете только имена клиентов, а не самих клиентов. Это очень вероятно неправильно; вы по-прежнему сможете иметь несколько клиентов с одним и тем же именем в модели, и когда вы это сделаете, табличное представление либо вывернется (потому что вы дали ему несколько столбцов разной длины), либо покажет, что фактически является мусором ( неправильные имена, потому что они смещены вверх относительно других столбцов).
Кроме того, предположим, что у вас есть табличное представление только с столбцом имени, например списком источников, и вы применили эту фильтрацию к нему. Затем, когда у вас есть дубликаты клиентов, приложение покажет только одного из них, и оно будет случайным. Если пользователь удалит этого клиента, появится другой (или один из остальных); это будет выглядеть так, как если бы удаление не удалось («Я удалил Джона Смита, но Джон Смит все еще появляется в списке!»).
Если вы намереваетесь запретить нескольким клиентам с одним и тем же именем делать это, когда клиенты вводятся или изменяются с помощью Проверка значения ключа , и удалите это ограничение вывода в табличном представлении. Если каким-то образом ваш пользователь получит в свою базу данных несколько пользователей с одним и тем же именем, вы не захотите, чтобы ваше приложение сошло с ума.
Необходимо предотвращать дублирование при вводе, а не при выводе.