передать вложенный объект класса Model в качестве параметров API JSON - PullRequest
0 голосов
/ 28 мая 2018

У меня есть класс модели, свойства которого различаются, некоторые свойства также состоят из объекта другого класса модели. Моя проблема заключается в том, что я хочу передать объект класса модели непосредственно в виде параметра API JSON.

Пожалуйста, предложите мне путь.

отл.

#import "locationModel.h"
interface userModel:NSObject

@property (nonatomic,retain) NSString *uName;

@property (nonatomic,retain) locationModel *mLocation;
// locationModel consist two Properties Lat Lng

@end

Я хочу передать objUserModel в json api в качестве параметров.Пожалуйста, предложите мне способ передать objUserModel в виде jsonapiparameters.

Спасибо заранее

1 Ответ

0 голосов
/ 28 мая 2018

Вы можете создать класс ModelObject и изменить все ваши классы моделей на подкласс этого класса.Затем измените реализацию dictionaryWithPropertiesOfObject: на что-то вроде этого:

- (NSDictionary *)dictionaryWithPropertiesOfObject:(id)obj {
    NSMutableDictionary *dict = [NSMutableDictionary dictionary];
    unsigned count;
    objc_property_t *properties = class_copyPropertyList([obj class], &count);
    for (int i = 0; i < count; i++) {
        NSString *key = [NSString stringWithUTF8String:property_getName(properties[i])];
        if([obj valueForKey:key]!=nil){
            id targetObject = [obj valueForKey:key];
            if ([targetObject isKindOfClass:[ModelObject class]]){
                [dict setObject:[self dictionaryWithPropertiesOfObject: targetObject]  forKey:key];
            }
            else if ([targetObject isKindOfClass:[NSArray class]]){
                [dict setObject:[self arrayWithDictionariesForObjectsInArray: (NSArray *)targetObject] forKey:key];
            }
            else {
                [dict setObject:targetObject forKey:key];
            }
        }
    }
    free(properties);
    return [NSDictionary dictionaryWithDictionary:dict];
}

- (NSArray *) arrayWithDictionariesForObjectsInArray: (NSArray *) array {
    NSMutableArray *mutableArray = [[NSMutableArray alloc] init];
    for (id object in array){
        [mutableArray addObject:[self dictionaryWithPropertiesOfObject:object]];
    }
    return [NSArray arrayWithArray:mutableArray]; 
}

Таким образом, все экземпляры ModelObject вставляются в словарь с их словарным представлением.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...