如何将类型对象(NSObject,AnyObject)转换为String类型?
'(NSObject,AnyObject)' is not convertible to 'String'
将街道转换为NSString而不是String编译,但我将街道转换为String,因为我想将它与placemark.name进行比较,它具有String!类型,而不是NSString.
我知道名字和街道是可选项,但我认为它们现在不是零,因为从MKLocalSearch返回的所有地方似乎都有非零名称和街道.
func formatPlacemark(placemark: CLPlacemark) -> (String,String) { let street = placemark.addressDictionary["Street"] as String if placemark.name == street { // Do something } }
String不是对象,因此您需要将其强制转换为NSString.我建议使用以下语法来强制转换它并同时解开它.不要担心将它与String类型的变量进行比较!因为它们兼容.这将有效:
func formatPlacemark(placemark: CLPlacemark) -> (String,String) { if let street = placemark.addressDictionary["Street"] as? NSString { if placemark.name == street { // Do something } } }
这有一个额外的好处,如果“Street”不是你的字典中的有效键,或者如果对象类型不是NSString,那么这不会崩溃.它只是不会进入该区块.
如果你真的想要街道成为一个字符串,你可以这样做:
if let street:String = placemark.addressDictionary["Street"] as? NSString
但在这种情况下,它不会给你买任何东西.