CLLocationCoordinate2D不符合预期的字典值类型'AnyObject'

时间:2016-01-10 09:03:37

标签: swift casting core-location nsnotificationcenter

我的单身人士位置管理员会在{{ 'id = ' ~ person._id }}

中检索到新的位置数据时发布通知
locationManager(_:didUpdateLocations:)

通过上述通知发布,我收到... NSNotificationCenter.defaultCenter().postNotificationName("LocationUpdate", object: self, userInfo: ["currentLocation": currentLocation, "currentLocationPoints": currentLocationPoints])` ... 部分的以下错误:

userInfo

因此我进行了以下类型的转换:

Value of type 'CLLocationCoordinate2D! does not conform to expected dictionary value type 'AnyObject'`

这次我在运行时遇到以下错误:

userInfo: ["currentLocation": currentLocation as! AnyObject,
           "currentLocationPoints": currentLocationPoints as! AnyObject]

为什么铸造失败?我知道Could not cast value of type '__C.CLLocationCoordinate2D' (0xbb1f0) to 'Swift.AnyObject' (0x312d074). Any之间的区别AnyObject不能是枚举,但AnyObject应该适合投射。

1 个答案:

答案 0 :(得分:2)

CLLocationCoordinate2Dstruct,不符合AnyObject协议。因此它不能存储到字典中。

可能的解决方案是分别发布Doublelatitude的{​​{1}}值。

另一种解决方案是链接到longitude并使用MapKit.framework的扩展名(符合NSValue

组:

AnyObject

得到:

let value = NSValue(MKCoordinate: currentLocation)
dictionary["currentLocation"] = value