2017-03-06 52 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