Путь к ключу позволяет выстраивать ключи цепочкой в одном выражении.

Если объект относится к классу, совместимому с механизмом доступа к значениям по одному ключу, а само значение этого ключа является объектом класса, совместимого с механизмом доступа к значениям по другому ключу, то эти ключи можно связать в цепочку, вызвав методы valueForKeyPath : и setValue : forKeyPath:. Символьная строка с путями к ключам похожа на последовательный ряд имен ключей, соединенных записью через точку. Например, выражение valueForKeyPath: @"keyl. key2", по существу, означает, что сначала метод valueForKey: вызывается с ключом 0"keyl" для получателя сообщений, а затем тот же самый метод valueForKey: вызывается для объекта, возвращаемого в результате первого вызова, но на этот раз с ключом @"кеу2".

В качестве примера, иллюстрирующего такую короткую запись, допустим, что у объекта myObject имеется переменная экземпляра theData, содержащая массив словарей, в котором у каждого словаря имеются ключи name и description. Ниже показано, как конкретное значение переменной экземпляра theData выводится с помощью функции NSLog ().

(

{

description = "The one with glasses."; name = Manny;

},

{

description = "Looks a little like Governor Dewey."; name = Мое;

},

{

description = "The one without a mustache."; name = Jack;

}

)

В таком случае в результате вызова [myObject valueForKeyPath: 0"theData. name" ] возвращается массив, состоящий из символьных строк @"Маппу", 0"Мое" и 0"Jack". Если вам непонятен такой результат, вернитесь на несколько абзацев назад к перечню примеров применения механизма KVC, среди которых рассматривается реализация метода valueForKey: в классе NSDictionary. Вспомните также обсуждение в главе 7 определяемых пользователем атрибутов времени выполнения. Ключ, вводимый в nib-файл при определении атрибута времени выполнения в инспекторе идентичности, на самом деле является путем к ключу.


 

 

 

Добавить комментарий