2016-03-08 106 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

謝謝,這正是我想要的=) –