Swift中如何将字典内数组元素与BaseURL拼接为完整字符串?
解决方法
问题核心是你未先将数组索引2的元素安全转换为String类型,就直接和baseURL拼接。imageArr?[2]的类型是Any?,Swift不允许String与Any?直接执行加法运算。
你可以通过可选绑定+类型转换安全处理,避免强制解包带来的崩溃风险:
if let values = data as? [String: Any], let methodName = values[Types.method] as? String, methodName == MethodName.ImageFromAgent, let imageArr = values[Types.array] as? [Any], let imagePath = imageArr[2] as? String { let imageUrl = baseURL + imagePath print("imageUrl = \(imageUrl)") }
代码说明
- 用链式可选绑定逐步验证每个值的存在性与类型,避免
!强制解包可能引发的崩溃 - 先将
imageArr[2]转换为String类型的imagePath,再和baseURL拼接,此时两个操作数均为String类型,符合加法运算要求
如果能100%确认服务器返回格式不会变动(不推荐此写法),也可以简化为:
if values[Types.method] as! String == MethodName.ImageFromAgent { let imageArr = values[Types.array] as? [Any] if let imagePath = imageArr?[2] as? String { let imageUrl = baseURL + imagePath print("imageUrl = \(imageUrl)") } }
内容的提问来源于stack exchange,提问作者user19949483
相关产品推荐
相关产品推荐

