swift_dynamiccast在处理和影响iOS中的性能方面花费的太多

我正在解析和创建来自服务器的json数据的一些组合进行大量的计算.整个过程需要很多时间,主要是我有固定的代码相关的问题,但在一个地方,分析器显示一个特定的调用所花费的时间,我无法确定.

我的处理中有很多投射.它创建了很多类型Flightfare的对象,我从一个字典创建它.

因此,convinece init如下所示,我该如何避免呢?

convenience init (dictionary: [String:AnyObject]) {
    self.init()
    refundType = dictionary["rt"] as! String
    if let unwrappedscore = dictionary["r"] as? Double {
        score = unwrappedscore
    }
    if let unwrappedValue = dictionary["t"] as? Int {
        taxes = unwrappedValue
    }
    if let unwrappedValue = dictionary["bf"] as? Int {
        basefare = unwrappedValue
    }
    if let unwrappedValue = dictionary["f"] as? Int {
        fee = unwrappedValue
    }
    if let unwrappedValue = dictionary["d"] as? Int {
        discount = unwrappedValue
    }
    if let unwrappedValue = dictionary["tf"] as? Int {
        fare = unwrappedValue
    }
    if let unwrappedValue = dictionary["ttf"] as? Int {
        totalfare = unwrappedValue
    }
    if let unwrappedValue = dictionary["hbo"] as? Bool {
        hbo = unwrappedValue
    }
    providerKey = dictionary["pk"] as? String
    hbf = dictionary["hbf"] as? [String]
}
听起来像在做价值的事情时付税吗?串.您已将该节点折叠在配置文件中,因此我只能提供一般建议来避免此问题:确保您不会以其原始形式重复处理相同的数据.作为迁移到类型中间形式的一部分,进行一次演示.

最小化类型转换是各种Swift JSON库,如Freddy和SwiftyJSON,试图保证对JSON的解析.

如果您的JSON数据的结构类似地不确定 – 这个节点是字符串还是对象,还是只是空值? – 那么您的代码也会遇到这个问题,也必须解决这个问题.

ETA:如果演员的费用明显地被收取到您的方便初始化(您应该使用该配置文件验证),那么该方法确实是一个问题.您可以通过使用将JSON解析为类型化表示形式的库来避免,例如前面提到的Freddy.这将使用库中的枚举大小写匹配替换代码中的转换.

选中配置文件选项中的框,通常它不会显示框架代码,因此您可以很容易地看到您直接控制的方法花费时间.然后,您可以在配置文件中钻取以获得每行成本统计信息,以集中优化.

相关文章

软件简介:蓝湖辅助工具,减少移动端开发中控件属性的复制和粘...
现实生活中,我们听到的声音都是时间连续的,我们称为这种信...
前言最近在B站上看到一个漂亮的仙女姐姐跳舞视频,循环看了亿...
【Android App】实战项目之仿抖音的短视频分享App(附源码和...
前言这一篇博客应该是我花时间最多的一次了,从2022年1月底至...
因为我既对接过session、cookie,也对接过JWT,今年因为工作...