iOS - 带动态密钥的JSONModel

时间:2016-12-27 23:43:49

标签: ios objective-c jsonmodel

我正在调用一个Web服务,它返回字典以呈现图形。字典结构是

  

{" 1":0," 2":0," 8":0," 9":2&# 34; 10":3," 11":0," 12":0}

问题是键是动态值,如1,2,3等表示月份。是否有可能在JsonModel中表示这个?

1 个答案:

答案 0 :(得分:0)

根据响应结构,看到您无法在运行时创建属性。但我们可以巧妙地使用预先定义的东西并实现这一目标。请执行以下步骤:

创建一个模型类。因此,您的MyCustomModel.h文件将如下所示

#import <Foundation/Foundation.h>

@interface MyCustomModel : NSObject

@property (nonatomic, retain) NSString * myCustomKey;
@property (nonatomic, retain) NSString * myCustomValue;

@end

这将是您的MyCustomModel.m文件

#import "MyCustomModel.h"

@implementation MyCustomModel
@synthesize myCustomKey, myCustomValue;

-(id)init {
    self = [super init];

    myCustomKey = @"";
    myCustomValue = @"";

    return self;
}
@end

现在让我们假设{&#34; 1&#34;:0,&#34; 2&#34;:0,&#34; 8&#34;:0,&#34; 9&#34;:2 ,&#34; 10&#34;:3,&#34; 11&#34;:0,&#34; 12&#34;:0}是NSDictionary,让我们说它的名字是{{1} }

现在做这些事情:

dictionaryResponse

因此,您的回复凯力将拥有所有回复键,例如[&#34; 1&#34;,&#34; 2&#34;,&#34; 8&#34;,&#34; 9&#34;, &#34; 10&#34;&#34; 11&#34;&#34; 12&#34;,]

现在您可以迭代循环并创建NSArray *responseKeys = [[NSArray alloc]init]; responseKeys = [dictionaryResponse allKeys]; 模型对象

NSMutableArray

现在NSMutableArray *arrayMonthList = [[NSMutableArray alloc]init]; for (int i = 0; i < responseKeys.count; i++) { MyCustomModel *myModelObject = [[MyCustomModel alloc]init]; myModelObject.myCustomKey = [NSString stringWithFormat:@"%@",[responseKeys objectAtIndex:i]]; myModelObject.myCustomValue = [dictionaryResponse valueForKey:[NSString stringWithFormat:@"%@",[responseKeys objectAtIndex:i]]]; [arrayMonthList addObject:myModelObject]; } 将由MyCustomModel

类型的对象组成

所以你可以使用它并解析它。即使您可以使用它在arrayMonthList上显示。以下代码用于打印模型属性的值,您可以按预期的级别进行自定义。

UITableView