Использование setValuesForKeysWithDictionary с дочерними объектами и JSON

У меня есть строка json

{"name":"test","bar":{"name":"testBar"}}

В цели c у меня есть объект

@interface Foo : NSObject {
}
@property (nonatomic, retain) NSString * name;
@property (nonatomic, retain) Bar * bar;
@end

И я просто синтезирую эти свойства. И у меня есть дочерний объект с синтезированными свойствами.

@interface Bar : NSObject {
}
@property (nonatomic, retain) NSString * name;
@end

Затем вот код, в котором я пытаюсь войти в объект Foo, где ответом является строка json, указанная выше:

    SBJsonParser *json = [[SBJsonParser new] autorelease];
    parsedResponse = [json objectWithString:response error:&error];
    Foo * obj = [[Foo new] autorelease];
    [obj setValuesForKeysWithDictionary:parsedResponse];
    NSLog(@"bar name %@", obj.bar.name);

Это вызывает исключение в инструкции NSLog:

-[__NSCFDictionary name]: unrecognized selector sent to instance 0x692ed70'

Но если я изменю код, он работает:

NSLog(@"bar name %@", [obj.bar valueForKey:@"name"]);

Я не понимаю, почему я не могу выполнить первый пример, или я что-то делаю не так?

8
задан John Calsbeek 9 June 2011 в 20:49
поделиться