0

Web サイトにアクセスし、そのサイトから 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 定数には、Web サイト データが読み込まれる前に値が割り当てられます。それが起こらないようにする方法が必要です。私はプログラミングにかなり慣れていないので、答えを念頭に置いてください。よろしくお願いします。

4

0 に答える 0