‘(NSObject,AnyObject)’不能转换为’String’
发布时间:2020-12-14 05:38:41 所属栏目:百科 来源:网络整理
导读:如何将类型对象(NSObject,AnyObject)转换为String类型? 在下面方法的第一行的末尾,因为String导致编译器错误: '(NSObject,AnyObject)' is not convertible to 'String' 将街道转换为NSString而不是String编译,但我将街道转换为String,因为我想将它与placem
如何将类型对象(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 但在这种情况下,它不会给你买任何东西. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |