IOS应用程序性能太慢,无法使用swiftyjson解析数据[关闭]

Posted

技术标签:

【中文标题】IOS应用程序性能太慢,无法使用swiftyjson解析数据[关闭]【英文标题】:IOS app Performance is too slow for parse data with swiftyjson [closed] 【发布时间】:2016-03-08 19:21:56 【问题描述】:

我用 swift 创建了应用程序,并为此使用了 swiftyjson。但是当我解析图像时它有点慢我怎样才能提高这个速度。你能帮帮我吗?我将在下面分享我的代码谢谢。

func parseJSON() 



        let path : String = NSBundle.mainBundle().pathForResource("jsonFile", ofType: "json") as String!
        let jsonData = NSData(contentsOfFile: path) as NSData!
        let readableJSON = JSON(data: jsonData, options: NSJSONReadingOptions.MutableContainers, error: nil)
        var Name = readableJSON[passedValue,"Product","Ad"]

        NumberofRow = readableJSON[passedValue].count




        for i in 1...NumberofRow 
            var Person = "Product"
            Person += "\(i)"
            var Name = readableJSON[passedValue][Person]["Ad"].string as String!

            var Age = readableJSON[passedValue][Person]["Fiyat"].string as String!

             var Image1 = readableJSON[passedValue][Person]["URL"].string as String!


            NamesArray.append(Name)
            AgeArray.append(Age)
            Imagearray.append (Image1)

        


    

【问题讨论】:

忘记 SwiftyJSON 或任何其他包装器/框架。目前,没有什么比 Foundation 的 NSJSONSerialization 更快地反序列化 JSON 数据了。 但我不知道如何使用 NSJSONSerialization 解析数据,因为我知道基础不支持从 url 获取图像 你无法解析图片,解析 JSON 通常非常快,并且是由系统框架完成的(所以,你也不要自己做)。我怀疑有些误解。你应该澄清你的问题到底是什么。 我有 json 数据和图像,如 url 我从 json 获取 url 并分配给图像视图。但是当我在等待上传图片对我来说太慢了,我需要让它更快 在 JSON(简单的结构化文本)中,“URL”将表示为 JSON String。此 URL 字符串必须经过正确 编码,才能在需要 URL 参数的系统框架中使用。您可以使用 NSJSONSerialization 解析 JSON 并获取该 JSON 的 representation,它是 NSDictionary 或包含其他 JSON 表示的 NSArray,例如字符串、布尔值、JSON 对象和 JSON 数组等 【参考方案1】:

您可以在后台线程中调用函数parseJSON,并在完成后返回主线程(以相应地更新 UI 或其他内容)。

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), 
    // Perform data parsing
    parseJSON()

    dispatch_async(dispatch_get_main_queue(),  () -> Void in
        // Update UI on main thread
    )
)

如果您想尝试这种方法,我建议您使用开源框架以更轻松地使用 GCD。例如https://github.com/duemunk/Async。如果你使用这个框架,你可以像下面这样简单地编写。

Async.background 
    // Perform data parsing
    parseJSON()
.main 
    // Update UI on main thread

希望对你有所帮助。

【讨论】:

谢谢你,这正是我想要的 =)

以上是关于IOS应用程序性能太慢,无法使用swiftyjson解析数据[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

查询太慢?SQL 优化这么做就对了!

Sencha 应用在 IOS 和 Android 上太慢了

在 Hive 中使用 UDF 连接两个大表 - 性能太慢

提高模糊性能 iOS7/8

iOS8 performSegueWithIdentifier 运行太慢

Hive UDF 性能太慢