2016-03-08 107 views
0

我使用swift创建了应用程序,并使用了swiftyjson。但是当我解析图像时有点慢,我该如何提高速度。你能帮我解答吗?我会在下面分享我的代码,谢谢。IOS应用程序使用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) 

     } 


    } 
+3

忘记SwiftyJSON或任何其他包装/框架。目前,没有什么比Foundation的NSJSONSerialization用于反序列化JSON数据更快。 – Moritz

+0

但我不知道如何解析与NSJSONSerialization的数据也因为我知道基础不支持从url获取图像 –

+0

你不能解析图像和解析JSON通常是非常快的,并由系统框架完成(所以,你不也可以自己做)。我怀疑有一些误解。你应该澄清你的问题实际上是什么。 – CouchDeveloper

回答

3

你可以调用在后台线程功能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 
} 

希望它可以帮助你。

+0

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