在objective-c中从NSDictionary创建NSObject

时间:2012-02-19 13:43:36

标签: objective-c for-loop nsdictionary nsobject

我想使用“for ... in”循环

将字典中的每个项目分配到我的对象中

我有这样的NSDictionary:

{"user_id" : "1", "user_name" : "John"}

我有一个带变量的NSObject:

NSString *user_id;
NSString *user_name

使用for循环,我想在我的NSObject

中分配我的NSDictionary中的每个项目
for (NSString *param in userDictionary) {

}

我怎么能这样做?

谢谢,

2 个答案:

答案 0 :(得分:14)

看看NSObject类方法:

- (void)setValue:(id)value forKey:(NSString *)key;

例如:

[userDictionary enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop){
    [myObject setValue:obj forKey:(NSString *)key];
}];

答案 1 :(得分:1)

我写了一个自动执行此操作的小型库,它还处理日期转换 https://github.com/aryaxt/OCMapper

只要所有键与属性名称相同,它就会自动将NSDictionary转换为NSObject。

Customer *customer = [Customer objectFromDictionary:customerDictionary];
NSArray *customers = [Customer objectFromDictionary:listOfCustomersDictionary];

如果键和属性名称不相同,则可以编写映射

[mappingProvider mapFromDictionaryKey:@"dob" toPropertyKey:@"dateOfBearth" forClass:[Customer class]];