arrays - 如何转换此语句以获得更好的性能

标签 arrays swift swift3

由于我在代码中添加了以下几行,因此在构建时我的性能非常差(索引需要 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/

相关文章:

ios - 如何在 TableViewController 中的 tableview 上方添加图像 - Swift 3

java - java中int数组到Integer数组列表的转换

python - 沿轴折叠掩码数组 - Python 中的 Numpy

Swift - 我的收藏 View 没有输出额外的数量

json - 尝试利用 decodable

swift - SiriKit Intents UI - Payment Domain - Center Area 重复三次

ios - 以编程方式使用 addSubview 时,Swift 3 UIView 不呈现 UILabel

javascript - 仅使用下划线将数组转换为对象

c++ - 堆栈数组变量损坏

swift - 如何为我的自定义 UIView 的属性设置动画?