Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 是否可以将NSDictionary强制转换为具有匹配属性的对象?_Objective C_Cocoa_Casting_Nsdictionary - Fatal编程技术网

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
    构造函数。