gpt4 book ai didi

objective-c - 将 setValuesForKeysWithDictionary 与子对象和 JSON 一起使用

转载 作者:太空狗 更新时间:2023-10-30 03:31:45 25 4
gpt4 key购买 nike

我有一个json字符串

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

在 objective-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"]);

我很困惑为什么我不能做第一个例子,还是我做错了什么?

最佳答案

你试过吗?

//Foo 类

-(void)setBar:(id)bar
{
if ([bar class] == [NSDictionary class]) {
_bar = [Bar new];
[_bar setValuesForKeysWithDictionary:bar];
}
else
{
_bar = bar;
}
}

关于objective-c - 将 setValuesForKeysWithDictionary 与子对象和 JSON 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6298890/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com