我正在解析和创建来自服务器的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] }
听起来像在做价值的事情时付税吗?串.您已将该节点折叠在配置文件中,因此我只能提供一般建议来避免此问题:确保您不会以其原始形式重复处理相同的数据.作为迁移到类型中间形式的一部分,进行一次演示.
原文链接:https://www.f2er.com/swift/318794.html最小化类型转换是各种Swift JSON库,如Freddy和SwiftyJSON,试图保证对JSON的解析.
如果您的JSON数据的结构类似地不确定 – 这个节点是字符串还是对象,还是只是空值? – 那么您的代码也会遇到这个问题,也必须解决这个问题.
ETA:如果演员的费用明显地被收取到您的方便初始化(您应该使用该配置文件验证),那么该方法确实是一个问题.您可以通过使用将JSON解析为类型化表示形式的库来避免,例如前面提到的Freddy.这将使用库中的枚举大小写匹配替换代码中的转换.
选中配置文件选项中的框,通常它不会显示框架代码,因此您可以很容易地看到您直接控制的方法花费时间.然后,您可以在配置文件中钻取以获得每行成本统计信息,以集中优化.