我在做一个项目,我必须用一个字符串替换xmlFile中的一个字符串,这个字符串包含用逗号分隔的字幕语言。
问题是,我得到的字幕有一个闭包函数,我不能返回值,但我必须存储在一个变量我的字幕。
下面是我的代码示例

func searchSubtitles(completion: ([String] -> Void)) {
   // GET Request for subtitles
   // ....
   completion(["fr", "en", "it", "es"])
}

func getSubtitles(completion:(String -> Void)) {
  var subs = ""
  searchSubtitles { (data) in
    for i in 0 ..< data.count {
      subs.appendContentsOf(data[i])
      subs.appendContentsOf(", ")
    }
  }
}

var SubStr: String {
  // have to return the string who contains all subtitles
}

// ...

myXMLFile = myXMLFile.stringByReplacingOccurrencesOfString("{{SUBS}}", withString: SubStr)
// Adding subs to my file

最佳答案

假设您使用基于异步完成的API,那么您将很难按程序工作(当函数返回值,然后调用其他函数时)。
回调(完成处理程序)模型建议使用来自完成处理程序内部的返回值。
换句话说,您可能希望将myXMLFile.stringByReplacingOccurrencesOfString()调用移到getSubtitles()完成处理程序中。

关于swift - 在闭包Swift上返回值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38438018/

10-12 14:44