‘(NSObject,AnyObject)’不能转换为’String’

前端之家收集整理的这篇文章主要介绍了‘(NSObject,AnyObject)’不能转换为’String’前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
如何将类型对象(NSObject,AnyObject)转换为String类型?

在下面方法的第一行的末尾,因为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

但在这种情况下,它不会给你买任何东西.

猜你在找的Swift相关文章