0

我有一个应用程序可以访问网站并从该网站下载 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 常量在加载网站数据之前被赋值。我需要一种方法来阻止这种情况的发生。我对编程相当陌生,所以请记住您的回答,提前谢谢您。

4

0 回答 0