self.categoryLabel.text = [[shop valueForKey:@"category.name"] description];
it should be
self.categoryLabel.text = [[shop valueForKeyPath:@"category.name"] description];
Reason . From Key Value Encoding Documentation
A key is a string that identifies a specific property of an object. Typically, the key matches the name of the access method or instance variable in the receiving object. Keys must use ASCII encoding, begin with a lowercase letter and not contain spaces.
Some examples of keys would be payee , openingBalance , transactions and amount .
The key path is a line of dot-separated keys, which is used to indicate the sequence of properties of an object to move. The property of the first key in the sequence refers to the receiver, and each subsequent key is evaluated relative to the value of the previous property.
For example, the key path address.street will receive the value of the address property from the receiving object, and then determine the street property relative to the address object.
source share