Objective c 是否可以将NSDictionary强制转换为具有匹配属性的对象?
是否可以将Objective c 是否可以将NSDictionary强制转换为具有匹配属性的对象?,objective-c,cocoa,casting,nsdictionary,Objective C,Cocoa,Casting,Nsdictionary,是否可以将NSDictionary强制转换为具有匹配属性的对象?例如,假设我有一本NSDictionary: @{@"custId" : @(101) @"custName" : @"Joe" @"custAddress" : @"1 Main St"} 如果我有一个定义了属性custId、custName和custAddress的CustModel类,有没有办法从NSDictionary中转换它们,或者我需要将每个属性单独移动到CustModel对象中?您不能只转换对象,但是您可以
NSDictionary
强制转换为具有匹配属性的对象?例如,假设我有一本NSDictionary
:
@{@"custId" : @(101)
@"custName" : @"Joe"
@"custAddress" : @"1 Main St"}
如果我有一个定义了属性
custId
、custName
和custAddress
的CustModel
类,有没有办法从NSDictionary
中转换它们,或者我需要将每个属性单独移动到CustModel
对象中?您不能只转换对象,但是您可以使用KVC并调用对象上的setValuesForKeysWithDictionary:
(您必须实例化它)并提供字典,它将为您完成所有工作
对于您的附加问题,有两个选项:
setValue:forUndefinedKey:
忽略或映射接下来的一个问题是,只要所有NSDictionary属性都与CustModel对象匹配,setValuesForKeysWithDictionary就可以正常工作,但如果dictionary具有我可能不关心的其他属性,它就会失败。有时,如果我从web服务返回的JSON字符串获取字典数据,我可能无法控制这一点。有没有办法只将它与匹配的属性匹配,而忽略其余的属性?没有。最好是为目标类定义一个
initWithDictionary
构造函数。