-1

以前は、この JSON をエラーなしで完全に解析できましたが、突然機能しなくなり、API キーではありません...

これは私が解析しようとしているものです: http://pastebin.com/vv8ScBfZ

これは私の解析コードです:

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;

それを実行すると、次のエラーが発生します。

    *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSArrayI isEqualToString:]: unrecognized selector sent to instance 0x8aa85f0'

いいえ、配列の値を文字列に割り当てようとしているわけではありません。だから私はここでかなり混乱しています。

考え?

ありがとう!

4

1 に答える 1

1

いいえ、配列の値を文字列に割り当てようとはしていません

そうそうそうです。

FlightStatus = [flighttrackjson objectForKey:@"flightStatuses"];
FlightID = [FlightStatus valueForKey:@"flightId"];

FlightStatusは配列であり、辞書ではありません(たとえば、JSONlintを使用してJSONをきれいに印刷すると、表示されます)。

さらに、コードにこのような同様のエラーがいくつかあると思います。1つは、にflightId対応するものであり、NSNumberではないNSStringものです。これにより、クラッシュも発生します。

JSONの公式リファレンスとNSJSONSerializationクラスのドキュメントを調べて、どのJSONデータ型がどのFoundationクラスにマップされているかを確認してください(ちなみに、これは非常に論理的です)。

于 2013-02-12T18:58:39.803 に答える