我正在做一个简单的项目来帮助学习 Swift,但我遇到了一个我认为有更深层次影响/学习机会的问题(试图从光明的一面看)。
高级问题是,当我使用 AlamoFire 发布 JSON 编码的参数时,EXC_BAD_ACCESS 错误很快出现在我设置其中一个参数(特别是 CoreLocation Manager 的“didUpdateLocations”)的单独代码行中......这是代码:
在 ViewController 中,我创建了一个可变字典:
var parameters = [String:AnyObject]()
而且,对于该didUpdateLocations
事件,我将更新的纬度/经度值分配给可变字典中的相应键。
class ViewController: UIViewController, CLLocationManagerDelegate {
let appDelegate = UIApplication.sharedApplication().delegate as AppDelegate
...
func locationManager(locManager: CLLocationManager!, didUpdateLocations locations: [AnyObject]!) {
appDelegate.parameters["longitude"] = locManager.location.coordinate.longitude
appDelegate.parameters["latitude"] = locManager.location.coordinate.latitude
}
最后,我有一个NSTimer.scheduledTimerWithTimeInterval
POST 到服务器的周期性函数(使用 )。
func updatePost() {
println("POSTing update")
Alamofire.request(.POST, "http://server.co/endpoint",
parameters: appDelegate.parameters, encoding: .JSON)
}
如果我注释掉 Alamofire POST,一切都很好。 使用POST,我在 didUpdateLocations 的第一行(longitude
设置密钥的位置)收到 EXC_BAD_ACCESS 错误
我怀疑这与 Alamofire 的编码例程如何转换参数有关,但我不知道为什么它会出现在 didUpdateLocations 函数中而不是 Alamofire 调用本身中......
任何人都可以提供任何见解吗?谢谢