0

だから私はここにあるRayWenderlichのMapkitチュートリアルに従っています。私はこのplotCrimePositions方法で犯罪を地図上にプロットすることになっているセクションで立ち往生しています。デバッガーを使用して、作成している場所に絞り込みましたNSDictionary* rootが、バグを特定できないようです。どんな助けでも大歓迎です。これが関連ファイルの要点です。

ありがとう!

編集:これが私のコンソールログです:

2012-12-23 16:31:52.925 MapTutorial[8993:c07] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'data parameter is nil'
*** First throw call stack:
(0x1850012 0x1645e7e 0x184fdeb 0x117a817 0x34697 0x35153 0x1659705 0x590920 0x7ccb24 0x1659705 0x590920 0x5908b8 0x651671 0x651bcf 0x650d38 0x5c033f 0x5c0552 0x59e3aa 0x58fcf8 0x223bdf9 0x223bad0 0x17c5bf5 0x17c5962 0x17f6bb6 0x17f5f44 0x17f5e1b 0x223a7e3 0x223a668 0x58d65c 0x341cd 0x2945)
libc++abi.dylib: terminate called throwing an exception
4

1 に答える 1

1

あなたの問題はここにあります:

- (IBAction)refreshTapped:(id)sender{
    //...
    [request startAsynchronous]; //Start the request
    [self plotCrimePositions:request.responseData]; //Assume there's data, 
    //despite the request not even have been given a chance to start
}

request同期的に実行し、終了時にそれに到達すると想定plotCrimePositions:したため、リクエストが取得したデータが非 nil であると想定したため (明らかにそうではありません)、MapKit が反転しました。指定した完了ハンドラーのスコープに移動した場合[self plotCrimePositions:request.responseData];、それは魅力のように機能するはずです。非同期リクエストは非同期です。つまり、リクエストはすぐに返されます。これが、完了ブロックが天の恵みである理由です。

于 2012-12-23T21:43:49.320 に答える