2017-03-06 48 views
0

因此,爲了演示目的,我從我的xcassets中訪問了一系列圖像。我試圖用解析框架一次將150張圖像保存到我的解析服務器。這是我迄今爲止的代碼。我遇到的問題是我的應用程序cpu在測試中達到100%並下降到0.此外,圖像沒有保存到解析。我希望有人能幫我找到一種有效的方法來保存150張圖片進行解析。保存多個圖像進行分析

var imageNameList: [String] { 
    var imageNameList2:[String] = [] //[NSMutableArray]() 
    for i in 0...149 { 
     let imageName = String(format: "pic_%03d", Int(i)) 
     imageNameList2.append(imageName) 
    } 
    return imageNameList2 
} 
@IBAction func Continue(_ sender: Any) { 
     for imageName in imageNameList { 
      var objectForSave:PFObject = PFObject(className: "Clo") 
      let object:UIImage = UIImage(named: imageName)! 
      let tilesPF = imageNameList.map({ name in 
       let data = UIImagePNGRepresentation(object as! UIImage)! 
       let file = PFFile(data: data) 

       let tile = PFObject(className: "Tile") 
       tile["tile"] = file 
      }) 

      objectForSave["tiles"] = tilesPF 

      objectForSave.saveInBackground(block: { responseObject, error in 

       //you'll want to save the object ID of the PFObject if you want to retrieve a specific image later 
      }) 


     } 

} 
+0

你可以在objective-c中處理答案嗎? – danh

+0

是的,我會拿我所能得到的 – john

+0

@danh你明白我的情況嗎 – john

回答

1

麻煩的是,緊for循環啓動所有這些要求的同時使該HTTP棧瓶頸的某些部分。

相反,連續運行的要求如下(以我最好的斯威夫特的近似值)...

func doOne(imageName: String, completion: (success: Bool)->()) { 
    var objectForSave:PFObject = PFObject(className: "Clo") 
    let object:UIImage = UIImage(named: imageName)! 
    // ... OP code that forms the request 
    objectForSave.saveInBackground(block: { responseObject, error in 
     success(error == nil) 
    }) 
} 

func doMany(imageNames: Array<String>, completion: (success: Bool)->()) { 
    if (imageNames.count == 0) return completion(YES) 
    let nextName = imageNames[0]; 

    self.doOne(imageName:imageNames[0] completion: {(success: Bool) -> Void in 
     if (success) { 
      let remainingNames = imageNames[1..imageNames.count-1] 
      self.doMany(imageNames: remainingNames completion:completion) 
     } else { 
      completion(NO) 
    }) 
} 

在英語中,以防萬一出了差錯我雨燕,這個想法是分解出一個請求通過一個完成處理程序進入它自己的函數。構建第二個函數,將網絡請求的參數數組作爲參數,並將該數組用作待辦事項列表:執行列表中的第一個項目,完成時,遞歸調用自身以執行其餘項目。

+0

我有一個問題。做什麼和做什麼。 Xcode是說它不識別這些腳本。你有沒有什麼東西 – john

+0

@john,這只是我近似的迅速。它說明算法不是精確的語法。我以爲我已經清楚了。 – danh