作者热门文章
- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我正在编写一个扩展来桥接 FirebaseDatabase 和 Eureka 之间的字典值.
private extension Dictionary {
func firebaseFriendlyDictionary() -> [String: Any?] {
return self.map({ (key: String, value: Any?) -> (String, Any?) in
if value is NSDate {
return (key, (value as! NSDate).timeIntervalSince1970)
}
return (key, value)
})
}
}
但是当我尝试构建时抛出这个错误:
map 生成“[T]”,而不是预期的上下文结果类型“[String: Any?]”
最佳答案
您的问题在于,map
总是返回一个Array
,即使应用于Dictionary
也是如此。你的错误消息基本上意味着,你声明你的方法返回一个Dicitonary
,但是里面的语句返回一个Array
([T]
- 意味着具有 一些 类型 T 的对象的数组)。在您的情况下,map
返回的数组将包含 元组(更多关于它们 here )。在这种情况下,它看起来像一个键值对,但它不等同于字典中的键值对。基本上,元组使您能够从方法返回多个值/对象。您可以将它们视为匿名 结构。
在我看来,没有必要使用 map
来完成您需要的 - Xcoder 先生提供的解决方案是可行的方法。
关于ios - Array.map() 产生 '[T]' ,而不是预期的上下文结果类型 '[String: Any?]',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42038176/
我是一名优秀的程序员,十分优秀!