0

所以我跟随 Ray Wenderlich 的 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:在完成时执行,所以您假设请求获得的数据不为零(显然不是这种情况),这导致 MapKit 翻转。如果您[self plotCrimePositions:request.responseData];进入您指定的完成处理程序的范围,它应该像一个魅力一样工作。异步请求是异步的:意味着它们会立即返回,这就是为什么完成块是如此的天赐之物。

于 2012-12-23T21:43:49.320 回答