首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将嵌套的Model类对象作为JSON api参数传递

将嵌套的Model类对象作为JSON api参数传递
EN

Stack Overflow用户
提问于 2018-05-28 17:56:30
回答 1查看 60关注 0票数 -1

我有模型类,它包含各种属性,有些属性也包含另一个模型的对象,class.My的问题是我想把模型类对象作为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作为suggest参数传递。

提前感谢

EN

回答 1

Stack Overflow用户

发布于 2018-05-28 18:21:42

您可以创建一个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的所有实例都插入到字典中,并带有它们的字典表示。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50563680

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档