为什么我收到此错误:结果值在'? :'表达式有不匹配的类型' [String]?'和' String'

时间:2015-11-02 08:07:51

标签: ios iphone swift google-maps ipad

所以我是swift的新手,我正在试验谷歌地图。 我无法弄清楚为什么这条线有效:

让state = p?.administrativeArea!= nil? p?.AdministrativeArea:" nil6"

但不是这一行:

让areaOfInterest = p?.areasOfInterest!= nil? p?.areasOfInterest:" nil7"

我在areaOfInterest行上收到此错误消息:

'中的结果值:'表达式有不匹配的类型' [String]?'和'字符串'

提前致谢。

    CLGeocoder().reverseGeocodeLocation(userLocation) { (placemarks, error) -> Void in

        if error != nil
        {
            print(error)
        }
        else
        {

            let p = placemarks?[0]

            print(p)
            let subThoroughfare = p?.subThoroughfare != nil ? p?.subThoroughfare : "nil1"
            let thoroughfare = p?.thoroughfare != nil ? p?.thoroughfare : "nil2"
            let country = p?.country != nil ? p?.country : "nil3"
            let postal = p?.postalCode != nil ? p?.postalCode : "nil4"
            let city = p?.locality != nil ? p?.locality : "nil5"
            let state = p?.administrativeArea != nil ? p?.administrativeArea : "nil6"
            let areaOfInterest = p?.areasOfInterest != nil ? p?.areasOfInterest : "nil7"

            self.addressLabel.text = "\(subThoroughfare!) \(thoroughfare!) \n \(city!), \(state!) \n \(country!) \(postal!)"
        }

    }
}

2 个答案:

答案 0 :(得分:3)

这是因为您正在访问地标的所有其他属性都是字符串,除了感兴趣的区域,这是一个(可选的)stings数组。当你无法工作时,你正试图施展它。

如果你真的想格式化你的错误,你可以使用:

let areaOfInterest = p?.areasOfInterest != nil ? p?.areasOfInterest : ["nil7"]

答案 1 :(得分:0)

尝试输入[“nil7”]而不是“nil7”