我正在使用JSONModel作为返回JSON对象的基本应用程序。
以下是我要返回的数据示例:https://gist.github.com/ryancoughlin/8043604 - 专注于tide
对象。
我正在尝试使用JSONModel JSONKeyMapper
- 这里的文档(向下滚动到中间) - https://github.com/icanzilb/JSONModel/blob/master/README.md#magical-data-modelling-framework-for-json
我试图找出如何实现它。我知道它也需要类似的关键路径:
编辑:从我的断点开始:http://dl.dropbox.com/u/19301636/Screenshots/rzqv.png
这是json
返回的内容:http://dl.dropbox.com/u/19301636/Screenshots/y5mt.png
TIDEMAPPER.M
#import "TideMapper.h"
@implementation TideMapper
+(JSONKeyMapper*)keyMapper
{
return [[JSONKeyMapper alloc] initWithDictionary:@{
@"tide.tideInfo": @"tideSite",
@"tide.tideSummaryStats": @"maxheight",
}];
}
@end
TIDEMAPPER.M
#import "TideMapper.h"
@implementation TideMapper
+(JSONKeyMapper*)keyMapper
{
return [[JSONKeyMapper alloc] initWithDictionary:@{
@"tideSummaryStats.maxheight": @"maxheight",
@"tideSummaryStats.minheight": @"minheight",
@"tideInfo.lat": @"lat",
@"tideInfo.lon": @"lon"
}];
}
@end
查看
@implementation TideDetailViewController
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:YES];
NSString *locationQueryURL = @"http://api.wunderground.com/api/xxxx/tide/geolookup/q/43.5263,-70.4975.json";
[JSONHTTPClient getJSONFromURLWithString: locationQueryURL
completion:^(NSDictionary *json, JSONModelError *err) {
// NSArray* results = [json valueForKeyPath:@"tide.tideInfo"];
_tide = [TideMapper arrayOfDictionariesFromModels:json];
NSLog(@"loans: %@", _tide);
}];
}
我想我需要将tide
更改为NSDictionary
- 我认为它不会返回数组。它只是一个位置的结果
在调用此方法时我很困惑。有没有人有使用这个JSONModel KeyMapper的经验?
由于
答案 0 :(得分:0)
您不要自己调用此方法。您的模型类在加载类时调用它一次并获取您的字典映射,并在每次初始化模型副本时使用它。
IE中。当你调用initWithDictionary(或initWithJSONString)时,你的模型类会将每个JSON键映射到一个类属性,但是你在KeyMapper中列出的键将执行以下操作:
再次 - 请注意,您的模型将在init时自动为您执行,并且所有其他JSON键将尝试映射到具有相应名称的属性。
如果您有10个备用分钟,则可以阅读本教程,其中展示了使用YouTube JSON API的自定义密钥映射器:
http://www.touch-code-magazine.com/how-to-make-a-youtube-app-using-mgbox-and-jsonmodel/