KVC运用

来源:互联网 发布:linux mysql user表 编辑:程序博客网 时间:2024/06/06 11:37

MVC架构中数据模型 model赋值取值遇到的问题.
如果 model 属性的名字 和字典中 Key 的名字一致,我们可以 model.m 里写一句setValue:(id)value forUndefinedKey 方法里面可以不用实现;在赋值的时候直接用 [model setValuesForKeysWithDictionary:dict]; 就可以搞定;
在取值的时候大都用 model.属性,如 model.name 来得到相关值.但是有些特殊情况,我们只知道属性名称,这时就可以用NSString *name = [model valueForKey:@”name”]; 来取值;
那如果 model 属性的名字 和字典中 Key 的名字一致时,如属性名不能为 id 等关键字等,该怎么办呢?
名称不一致,可以在setValue:(id)value forUndefinedKey 写一些if 语句后用[model setValuesForKeysWithDictionary:dict]赋值;在用NSString *name = [model valueForKey:@”name Key”]取值 时 ,可以在Value:(id)value forUndefinedKey方法里面写一些 if 语句;问题就迎刃而解了.代码如下

  - (void)setValue:(id)value forUndefinedKey:(NSString *)key {    if ([key isEqualToString:@"id"]) {        self.myID = value;    }}  
- (id)valueForKey:(NSString *)key {    if ([key isEqualToString:@"name Key"]) {        return  self.name;    }  }
0 0
原创粉丝点击