0

ここに私の解析コードがあります:

    - (void)connectionDidFinishLoading:(NSURLConnection *)connection{
NSError *myError = nil;
NSDictionary *flighttrackjson = [NSJSONSerialization JSONObjectWithData:jsonresponse options:NSJSONReadingMutableLeaves  error:&myError];
NSArray *FlightStatus =  [flighttrackjson objectForKey:@"flightStatuses"];
NSString *FlightID = [FlightStatus valueForKey:@"flightId"];
NSString *DepartACode = [FlightStatus valueForKey:@"departureAirportFsCode"];
NSString *ArivalACode = [FlightStatus valueForKey:@"arrivalAirportFsCode"];
NSArray *DepartATime = [FlightStatus valueForKey:@"departureDate"];
NSArray *AriveATime = [FlightStatus valueForKey:@"arrivalDate"];
NSString *DepartTimeString = [DepartATime valueForKey:@"dateLocal"];
NSString *ArriveTimeString = [AriveATime valueForKey:@"dateUtc"];
NSArray *Delays = [FlightStatus valueForKey:@"delays"];
NSString *DepartDelayMinutes = [Delays valueForKey:@"departureGateDelayMinutes"];
NSString *ArriveDelayMinutes = [Delays valueForKey:@"arrivalGateDelayMinutes"];
NSArray *AirportInfo = [FlightStatus valueForKey:@"airportResources"];
NSString *DepartTerminal = [AirportInfo valueForKey:@"departureTerminal"];
NSString *DepartAGate = [AirportInfo valueForKey:@"departureGate"];
NSString *ArriveTerminal = [AirportInfo valueForKey:@"arrivalTerminal"];
NSString *ArriveAGate = [AirportInfo valueForKey:@"arrivalGate"];
NSString *BaggageClaim = [AirportInfo valueForKey:@"baggage"];
flightID.text=FlightID;
DepartCode.text=DepartACode;
ArrivalCode.text=ArivalACode;
DepartTime.text=DepartTimeString;
ArriveTime.text=ArriveTimeString;
DepartDelay.text=DepartDelayMinutes;
ArriveDelay.text=ArriveDelayMinutes;
DepartTerm.text=DepartTerminal;
DepartGate.text=DepartAGate;
ArriveTerm.text=ArriveTerminal;
ArriveGate.text=ArriveAGate;
Baggage.text=BaggageClaim; 
}

それを実行すると、次のようになります。

2013-02-09 21:51:40.262 Places[7083:c07] -[__NSArrayI isEqualToString:]: 認識されないセレクターがインスタンス 0x8262b50 に送信されました 2013-02-09 21:51:40.263 Places[7083:c07 ] *キャッチされない例外 'NSInvalidArgumentException'、理由: '-[__NSArrayI isEqualToString:]: 認識されないセレクターがインスタンス 0x8262b50 に送信されました'

そしてこれを強調します:

return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate クラス]));

私のコードは見栄えが悪いですか、それとも誰かがこのエラーの意味を説明できますか?

これが私が取り組んでいるものです。http://pastebin.com/vv8ScBfZ

申し訳ありませんが、私はこれらすべてに非常に慣れていません。

ヒントをありがとう!

4

1 に答える 1

2

FlightStatus は、1 つのオブジェクト (多数のキーを持つ辞書) を持つ配列のようです。これは配列であるため、含まれている辞書で valueForKey: を使用する前に、最初にその 1 つのオブジェクトを取得する必要があります。これを修正する最も簡単な方法は、これを変更することです。

NSArray *FlightStatus =  [flighttrackjson objectForKey:@"flightStatuses"];

これに:

NSDictionary *FlightStatus =  [[flighttrackjson objectForKey:@"flightStatuses"] lastObject];
于 2013-02-10T05:42:51.657 に答える