Создать NSObject из NSDictionary в target-c - PullRequest
4 голосов
/ 19 февраля 2012

Я хотел бы назначить каждый элемент из словаря в мой объект, используя цикл for ... in

У меня есть NSDictionary, подобный этому:

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

И у меня есть NSObject с переменной:

NSString *user_id;
NSString *user_name

С помощью цикла in я хочу назначить каждый элемент из моего NSDictionary в моем NSObject

for (NSString *param in userDictionary) {

}

Как я могу это сделать?

Спасибо

Ответы [ 2 ]

14 голосов
/ 19 февраля 2012

Посмотрите на метод класса NSObject:

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

Например:

[userDictionary enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop){
    [myObject setValue:obj forKey:(NSString *)key];
}];
1 голос
/ 30 августа 2013

Я написал небольшую библиотеку, которая автоматизирует это, а также обрабатывает преобразование дат 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]];
...