相关疑难解决方法(0)

SwiftyJSON性能问题

我遇到了严重的性能问题,使用我们的API从SwiftyJson解析JSON并填充核心数据.

这些数据是用Alamofire下载的,它运行得很好,但用SwiftyJson解析json的速度很慢.为了查看库是否确实存在问题,我重写了在解析数据的众多地方之一的json解析.在下面的代码中,我正在分析大约400个旅游景点之一的开放时间.

查看这些屏幕截图中的差异,7,7秒到185毫秒:

在此输入图像描述

在此输入图像描述

Swifty方式:

    let openDescription:String = json["OpeningHours"]["OpeningHoursGenericExceptions"].string!
    let monOpen:[String]    = json["OpeningHours"]["Monday"]["From"].string!.componentsSeparatedByString(":")
    let monClose:[String]   = json["OpeningHours"]["Monday"]["To"].string!.componentsSeparatedByString(":")
    let tueOpen:[String]    = json["OpeningHours"]["Tuesday"]["From"].string!.componentsSeparatedByString(":")
    let tueClose:[String]   = json["OpeningHours"]["Tuesday"]["To"].string!.componentsSeparatedByString(":")
    let wedOpen:[String]    = json["OpeningHours"]["Wednesday"]["From"].string!.componentsSeparatedByString(":")
    let wedClose:[String]   = json["OpeningHours"]["Wednesday"]["To"].string!.componentsSeparatedByString(":")
    let thuOpen:[String]    = json["OpeningHours"]["Thursday"]["From"].string!.componentsSeparatedByString(":")
    let thuClose:[String]   = json["OpeningHours"]["Thursday"]["To"].string!.componentsSeparatedByString(":")
    let friOpen:[String]    = json["OpeningHours"]["Friday"]["From"].string!.componentsSeparatedByString(":")
    let friClose:[String]   = json["OpeningHours"]["Friday"]["To"].string!.componentsSeparatedByString(":")
    let satOpen:[String]    = json["OpeningHours"]["Saturday"]["From"].string!.componentsSeparatedByString(":")
    let satClose:[String]   = json["OpeningHours"]["Saturday"]["To"].string!.componentsSeparatedByString(":")
    let sunOpen:[String]    = json["OpeningHours"]["Sunday"]["From"].string!.componentsSeparatedByString(":")
    let sunClose:[String]   = json["OpeningHours"]["Sunday"]["To"].string!.componentsSeparatedByString(":")
Run Code Online (Sandbox Code Playgroud)

本土方式:

    var monOpen:[String] = []
    var monClose:[String] = []
    var tueOpen:[String] = []
    var tueClose:[String] = …
Run Code Online (Sandbox Code Playgroud)

json ios swift swifty-json

15
推荐指数
1
解决办法
3383
查看次数

迭代字典数组以获取所有键

我有一个在对象中[[String : AnyObject]]调用的字典数组- 每个字典都保存一个作为 String 的名称和一个作为 AnyObject 的 id。roomsUser

我想用名称填充表视图,因此我尝试循环数组并从字典中获取字符串值。

        if let roomDict = myUser.rooms as? [[String : AnyObject]] {
            for (roomNames, _) in roomDict {
                cell.textLabel?.text = roomNames
            }
        }
Run Code Online (Sandbox Code Playgroud)

我相对较新,从我在教程中看到的内容以及循环字典时的情况来看,您使用下划线来指定您不需要第二个值。因此,只需获取所有第一个值(在本例中为名称),并将它们设置为roomNames变量即可。

然而我在这里很困惑,因为我不是循环字典,而是循环字典数组。所以我不知道该怎么做。我进行了搜索,看到的结果通常都是关于 JSON 的,但这里的情况并非如此。我怎样才能做到这一点?

谢谢你的帮助!

ios swift

1
推荐指数
1
解决办法
3681
查看次数

标签 统计

ios ×2

swift ×2

json ×1

swifty-json ×1