分派队列会弄乱数组中的顺序,如下所示。我正在尝试对数组进行排名,然后能够对其进行翻译。到目前为止,它不起作用:
let top5 = Array(labels.sorted{ $0.confidence > $1.confidence}.prefix(upTo:5))
for lulu in top5 {
let translator = ROGoogleTranslate()
var params = ROGoogleTranslateParams()
params.source = "en"
params.target = "es"
params.text = "\(String(describing: lulu.label))"
translator.translate(params: params, callback: { (result) in
DispatchQueue.main.async {
self.textUno.text = self.textUno.text! + "\(lulu.label)" + " \(lulu.confidence*100)\n"
self.textDos.text = self.textDos.text! + "\(result)\n"
self.view.addSubview(self.textUno)
self.view.addSubview(self.textDos)
}
})
}
如果我尝试将DispatchQueue.main.async
的排序排除在外,则翻译将不会与正确的单词对齐。
如何解决此问题,以便对数组进行排序并使翻译匹配?
答案 0 :(得分:1)
首先对数组进行翻译,然后对它们进行排名。
首先简化它,并确保其正常工作,然后将所有零件放在一起。
如果您确实想这样做,则需要在对它们进行排序后将它们放入一个临时数组中,然后在末尾使用它。
正如您所说,这将返回混乱的结果。
下面的示例非常接近,需要一点点修饰,但是您应该可以从中完成。
******
**abc*
*deed*
******