1

私は Objective-C を使い始めたばかりで、AFNetworking によってプルされたデータを抽出して、ラベル テキストなどとして使用することができないようです。Forecast.io に支えられた天気アプリと、Forecastr APIに使用しています。ラッパー。API が JSON を辞書に書き込んでいる場合、それが見つからないようです。

メイン ビュー コントローラで:

[forecastr getForecastForLocation:location time:nil exclusions:nil success:^(id JSON) {
        NSLog(@"JSON response was: %@", JSON);
        NSLog(@"Testing: %@", [JSON valueForKey:kFCSummary]);

    } failure:^(NSError *error, id response) {
        NSLog(@"Error while retrieving forecast: %@", [forecastr messageForError:error withResponse:response]);
    }];
}

最初の NSLog 行は、シリアル化された完全な JSON オブジェクトとすべてを返しますが、2 行目は単に NULL を出力します。

Forecastr.m ファイルで:

NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:urlString]];
if (self.callback) {
    AFHTTPRequestOperation *httpOperation = [[AFHTTPRequestOperation alloc] initWithRequest:request];
    [httpOperation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
        NSString *JSONP = [[NSString alloc] initWithData:responseObject encoding:NSASCIIStringEncoding];
        if (self.cacheEnabled) [self cacheForecast:JSONP withURLString:cacheKey];
        success(JSONP);
    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
        failure(error, operation);
    }];
    [pendingRequests addObject:httpOperation];
    [forecastrQueue addOperation:httpOperation];
} else {
    AFJSONRequestOperation *jsonOperation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request
        success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) {
        if (self.cacheEnabled) [self cacheForecast:JSON withURLString:cacheKey];
        success(JSON);
    } failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id JSON){
        failure(error, JSON);
    }];
    [pendingRequests addObject:jsonOperation];
    [forecastrQueue addOperation:jsonOperation];
}

これは、キャッシュされた予測を読み取り、キャッシュが古すぎる場合は新しい JSON ファイルを取得していることがわかります。しかし、JSON がどこに配置されているかわかりません。また、ほとんどのチュートリアルやリソースで使用されている辞書にもありません。

独自の辞書を作成するなど、すでにさまざまなことを試しましたが、そこに JSON オブジェクトが追加されません。また、返された JSON オブジェクトを辞書とキーと値のペアとして使用しようとしましたが、何も機能していないようです。私は何日も頭を壁にぶつけていましたが、Forecastr を使って問題を抱えている人はほとんどいません。

4

2 に答える 2

1

問題は、返されるデータがいくつかの異なるセクション (現在の日と各曜日など) に分割されていることです。データセット全体に温度を尋ねるだけではなく、関心のある「日」に移動してから温度を要求する必要があります。そのような:

[[JSON objectForKey:kFCCurrentlyForecast] objectForKey:kFCTemperature]
于 2013-06-16T18:47:10.907 に答える
0

JSON は文字列 ( github ) のようです。これを解析するには、JSONKitなどのライブラリを使用できます。

于 2013-06-16T04:36:05.910 に答える