‘(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

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

相关文章

软件简介:蓝湖辅助工具,减少移动端开发中控件属性的复制和粘...
现实生活中,我们听到的声音都是时间连续的,我们称为这种信...
前言最近在B站上看到一个漂亮的仙女姐姐跳舞视频,循环看了亿...
【Android App】实战项目之仿抖音的短视频分享App(附源码和...
前言这一篇博客应该是我花时间最多的一次了,从2022年1月底至...
因为我既对接过session、cookie,也对接过JWT,今年因为工作...