在iPhone中填写模型类的正确做法

sha*_*988 2 iphone objective-c ios

我在填充模型类的过程中有一个简单的疑问.我得到一个web服务响应,其中包含一个jsonDictionary,其中包含10-15个(可以是任何数字)keyValue对.我通常使用另一个解析器类将此jSON解析为NSDictionary,并使用NSDictionary从视图控制器填充模型类.但最近我在另一个代码中看到了.通过解析JSON字符串创建的NSDictionary将传递给具有静态方法的类.并且该模型从该类中的静态方法中填充,如下所示

类名: ModelMaker

静态方法,例如:

+ (MyModel1 *)fillInMyModelFromDictionay:(NSDictionary *)myDictionary;
+ (MyModel2 *)fillInMyModel2FromDictionay:(NSDictionary *)myDictionary2;

+(MyModel1 *)fillInMyModelFromDictionay:(NSDictionary *)myDictionary 
{
    MyModel1 *myModel1 = [[MyModel1 alloc] init];
    myModel1.name = [myDictionary objectForKey:@"name"];
    myModel1.age = [myDictionary objectForKey:@"age"];
    return myModel1;
}
Run Code Online (Sandbox Code Playgroud)

那么你认为哪种方法更好.从视图控制器本身填充我的模型对象或使用上面显示的类,其唯一目的是填充模型对象.

Gia*_*one 7

如果字典中的键与模型对象的属性名称匹配,则可以使用NSObject方法- (void)setValuesForKeysWithDictionary:(NSDictionary *)keyedValues为您完成所有工作.如果某些键不匹配,您仍然可以使用该方法,但在模型类中需要覆盖- (id)valueForUndefinedKey:(NSString *)key.

有关更多信息,请查看" 键值编码编程指南".