0

JSON オブジェクトを返す基本的なアプリに JSONModel を使用しています。

これが私が返すデータのサンプルです: 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


タイドマッパー.M

#import "TideMapper.h"

@implementation TideMapper

+(JSONKeyMapper*)keyMapper
{
    return [[JSONKeyMapper alloc] initWithDictionary:@{
                                                       @"tide.tideInfo": @"tideSite",
                                                       @"tide.tideSummaryStats": @"maxheight",
                                                       }];
}

@end

タイドマッパー.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 を使用した経験のある人はいますか?

ありがとう

4

1 に答える 1

0

このメソッドを自分で呼び出す必要はありません。モデル クラスは、クラスが読み込まれるときに 1 回呼び出し、辞書マップを取得し、モデルのコピーを初期化するたびにそれを使用します。

すなわち。initWithDictionary (または initWithJSONString) を呼び出すと、モデル クラスは各 JSON キーをクラス プロパティにマップしますが、KeyMapper にリストしたキーに対しては次のことを行います。

  • JSON 内の「tideSummaryStats.maxheight」の値を取得し、クラス モデルの「maxheight」プロパティに格納します。
  • これは、tideSummaryStats の値を取ります。JSON で minheight を取得し、クラス モデルの「minheight」プロパティに保存します。
  • などなど

繰り返しますが、モデルは初期化時に自動的にそれを行い、他のすべての JSON キーは対応する名前でプロパティにマップしようとすることに注意してください。

10 分程度の余裕がある場合は、YouTube の JSON API でカスタム キー マッパーを使用する方法を紹介するこのチュートリアルを読むことができます。

http://www.touch-code-magazine.com/how-to-make-a-youtube-app-using-mgbox-and-jsonmodel/

于 2013-12-24T07:10:29.757 に答える