我正在调用一个Web服务,它返回字典以呈现图形。字典结构是
{" 1":0," 2":0," 8":0," 9":2&# 34; 10":3," 11":0," 12":0}
问题是键是动态值,如1,2,3等表示月份。是否有可能在JsonModel中表示这个?
答案 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