我有一个应用程序可以访问网站并从该网站下载 HTML,将其转换为字符串,从字符串中获取一些信息,然后将其用于应用程序。我的问题是提取字符串的代码在实际加载数据之前运行。我尝试将该代码放入完成处理程序中,但要么没有解决问题,要么我做错了。这是我的代码:
for var i = 0; i <= textViewContentArray.count - 1; i++ {
var dontCount = false
isTaskComplete = false
var currentWord = textViewContentArray[i]
let url = NSURL(string: "http://words.bighugelabs.com/" + currentWord)
var request: NSURLRequest = NSURLRequest(URL: url!)
let config = NSURLSessionConfiguration.defaultSessionConfiguration()
let session = NSURLSession(configuration: config)
let task : NSURLSessionDataTask = session.dataTaskWithRequest(request, completionHandler: {(data, response, error) in
if error == nil {
//Getting String From URL Data
let urlContent = NSString(data: data!, encoding: NSUTF8StringEncoding)!
if urlContent.containsString("Word not found.") == false && urlContent.containsString("I couldn't find that.") == false && urlContent.containsString("Not Found") == false {
//Extracting Needed Info From String
let startPointArray = urlContent.componentsSeparatedByString("ul class=\"words\">")
let url1 = startPointArray[1]
let endPointArray = url1.componentsSeparatedByString("</ul><h3>sounds kind of like")
var wordsBodyString = endPointArray[0]
wordsBodyString = wordsBodyString.stringByReplacingOccurrencesOfString("</a></li>", withString: "")
let wordsBasicArray = wordsBodyString.componentsSeparatedByString("<li><a href=\"/")
var wordsAdvancedArray: [String] = []
for var i = 0; i <= wordsBasicArray.count - 1; i++ {
var currentWordArray = wordsBasicArray[i].componentsSeparatedByString("\">")
wordsAdvancedArray.append(currentWordArray[0] as! String)
}
for var i = 0; i <= wordsAdvancedArray.count - 1; i++ {
if count(wordsAdvancedArray[i]) < count(currentWord) {
shorterWordsArray.append(wordsAdvancedArray[i])
}
}
shorterWordsArray.removeAtIndex(0)
shorterWordsArrayGlobal[i] = shorterWordsArray
})
task.resume()
}
urlContent 常量在加载网站数据之前被赋值。我需要一种方法来阻止这种情况的发生。我对编程相当陌生,所以请记住您的回答,提前谢谢您。