由于我在代码中添加了以下几行,因此在构建时我的性能非常差(索引需要 5 到 7 分钟)。
var valuesToPassToDetailViewController = [[String:[String: Any]]]()
var dict = [String:[String: Any]]()
dict = [title as! String:["title":title as! String, "valueD":postValue["value"] ?? "", "valueD":postValue["value"] ?? "","valueD":postValue["value"] ?? "","valueD": postValue["value"] ?? "","valueD": postValue["value"] ?? "","valueD":postValue["value"] ?? "","valueD":postValue["value"] ?? "" ,"valueD": postValue["value"] ?? "", "valueD": postValue["value"] ?? ""]]
self.valuesToPassToDetailViewController.append(dict)
请记住,valueD 是 Key 的替代品,它当然具有不同的键值,而 value 是与上述相同的替代品。
请帮我解决这个问题。感谢您的每一个回应。
最佳答案
(除了糟糕的代码实践之外)由于大量的文字嵌套,您编写的代码 Swift 编译器将无法处理。 (也发生在其他代码段中。) 更简单的解决方案:
当您重复使用相同的值时:
let nonNullValue = postValue["value"] ?? ""
dict = [title as! String : ["title":title,
"valueD": nonNullValue,
"valueD": nonNullValue,
"valueD": nonNullValue,
"valueD": nonNullValue,
"valueD": nonNullValue,
"valueD": nonNullValue,
"valueD": nonNullValue ,
"valueD": nonNullValue,
"valueD": nonNullValue]]
会完成这项工作。
如果允许的话,一些编码笔记:
使用 var 来重复值,这样做不仅能让编译器满意,而且通常速度更快(特别是如果您使用将产生调用/返回的 a.b.c.d()..)
不要在控件之间传递通用结构,当读取/下载时,创建您的类/结构并传递它们。
最好动态地添加到 dict,如果您必须从磁盘/网络读取数据,这将很容易。
希望对您有所帮助。
另一个建议:
以这种方式传递给 typealias:
typealias Dict = [[String:[String: Any]]]
所以你可以这样写:
var valuesToPassToDetailViewController2 = Dict()
反测:
var valuesToPassToDetailViewController = [[String:[String: Any]]]()
var valuesToPassToDetailViewController2 = Dict()
valuesToPassToDetailViewController2 = valuesToPassToDetailViewController
关于arrays - 如何转换此语句以获得更好的性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45689425/