- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我已经升级到 xcode 7 beta 6,因为 iOS 9 即将推出。我很高兴我的代码转换没有太多麻烦,除了一个异常(exception)。
似乎 placemark.addressDictionary
已更改为 [NSObject: AnyObject]
?
这是我在 xCode 6 中用于 map 搜索的代码
for item in response.mapItems as! [MKMapItem] {
var placeMarkAddress = item.placemark.addressDictionary
let street:String = placeMarkAddress["Street"] != nil ? placeMarkAddress["Street"] as! String : ""
}
这不再有效,因为 placeMarkAddress
现在是 [NSObject: AnyObject]
?
如何通过按名称引用 NSObject
来获取值 (AnyObject
)?
我已经在 xcode7 中试过了
for item in response!.mapItems {
var placeMarkAddress = item.placemark.addressDictionary
for placeMarkAddress in placeMarkAddresses!{
print(placeMarkAddress)
}
}
我得到的输出是这样的。
(FormattedAddressLines, [440 Castro St, San Francisco, CA 94114-2020, United States])
(Street, 440 Castro St)
(SubAdministrativeArea, San Francisco)
(Thoroughfare, Castro St)
(ZIP, 94114)
(Name, 440 Castro)
(City, San Francisco)
(PostCodeExtension, 2020)
(Country, United States)
(State, CA)
(SubLocality, Castro)
(SubThoroughfare, 440)
(CountryCode, US)
这对你们中的一些人来说可能是显而易见的,但我仍然是 iOS 开发的新手。
最佳答案
因为 placeMarkAddress
是 [NSObject: AnyObject]?
,所以你必须在使用它之前打开它。可选的链接 ?
在这里很合适;如果字典不是 nil
,它将打开字典;如果字典是 nil
,它将安全地返回 nil
。
而不是显式检查 nil
并使用 ? :
运算符来替换 ""
,有一个特殊的运算符可以做到这一点,称为 nil 合并运算符 ??
它被使用像这样:
let street = placeMarkAddress?["Street"] as? String ?? ""
以这种方式编写语句可以通过 4 种方式保护您:
placeMarkAddress
为 nil
,可选链 placemarkAddress?["Street"]
将返回 nil
,可选类型转换 as? String
会将 nil
转换为具有 nil
值的 String?
,而 ??
将将其替换为空字符串 ""
。"Street"
不是字典中的有效键,placeMarkAddress?["Street"]
将返回 nil
,这将如第 1 点所述,转换为 ""
。"Street"
的值的类型不是String
,则条件转换 将返回一个String?
的值为 nil
,??
将转换为 ""
。??
安全地解包字典中的值(如果它存在并且是 String
),否则它替换提供的默认值(空 String
""
)。关于ios - xcode 7 Beta 6 中地标 addressDictionary 的更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32267726/
我在 kml 中创建了一个名称和 ID = 'campania' 的地标 我使用 google.earth.fetchKml(ge, href, function()) 方法上传了它 我在 map 上
我需要检测翼蜂的静脉连接(图片只是一个例子)。我使用 opencv - python。 ps:可能图片画质差了点,但是图片都是一个像素宽连在一起的。 最佳答案 这是一个有趣的问题。我得到的结果并不完美
我正在开发一款 Google map 应用,目标用户可能需要关于特定位置的路线,这些位置只能通过应用中的经纬度获知。 问题是方向需要解析为人类可读的名称,最好是任何位置都可以相对于另一个附近的位置进行
我正在使用uitableview。当我选择一个单元格时,我试图保存地标。从下面的代码中,我添加了一个表格 View ,当我选择一个单元格时,将显示地标。但我在保存它时遇到了麻烦,因为当我转到另一个 V
我可以找到很多关于如何将 KML 多边形转换为 SVG 对象的文档,但找不到相反的文档。是否存在这样的脚本,或者有人知道如何编写脚本吗? 基本上我想拿一些GPL SVG maps from wikim
我在其他应用程序(例如 ios 6 星巴克)上看到它,当我的 map View 打开时,我希望它显示整个英国/不列颠群岛的区域,然后我希望它放大到我指定的位置区域点我有. 更新代码: - (void)
我在 kml 文件中创建的地标信息 在 iPad 上不显示。窗口打开,但没有内容。它 过去一直有效,并且在 Windows 版 Google 地球中运行良好 和安卓。我感觉这可能是 Google 的问
我正在尝试从 Apple 的电影应用程序复制 Landmark Accessibility 的流程。我尝试使用带有自定义标题的 TableView 和标准标题 View ,其中我的单元格内部有一个 C
我使用 GGeoXml 对象在嵌入式 Google map 上叠加了一个 KML 文件。我希望能够从 Javascript 访问 KML 文件中的特定地标(例如,在 map 上突出显示选定的多边形以响
我正在寻找一种方法来生成复杂的地标(或“附加”到地标的叠加层)。 有没有办法(我还没有找到)使用 Map v3 api 来附加/覆盖地标? 或者,我是否需要在 Google API 之外进行绘制,然后
我正在使用 Java API for KML、JAK 来构建 KML 文件。我希望能够使用其 ID 来删除某个功能,但我还没有找到如何执行此操作的好示例。理想情况下,代码为“myFolder.dele
我是一名优秀的程序员,十分优秀!