首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Swift使用API "to fast"?

Swift使用API "to fast"?
EN

Stack Overflow用户
提问于 2014-10-22 22:00:12
回答 2查看 148关注 0票数 0

我目前正在为一个小应用程序使用英雄联盟API -它需要我一个接一个地发送一些请求,但目前我遇到了一个问题。下面是我的代码

代码语言:javascript
运行
复制
import UIKit

var summonorname:String = ""

class ViewController: UIViewController {
    var SummonorID = ""


    @IBOutlet weak var Input: UITextField!
    @IBAction func SubmitBT(sender: AnyObject) {
        summonorname = Input.text
        println(summonorname)

        let urlpath_summonorID = "https://euw.api.pvp.net/api/lol/euw/v1.4/summoner/by-name/"+summonorname+"?api_key=12345-12345-12345-12345-12345"


        let url_summonorID = NSURL(string: urlpath_summonorID)
        let session_1 = NSURLSession.sharedSession()
        let task_1 = session_1.dataTaskWithURL(url_summonorID, completionHandler: {data,response, error -> Void in
            if (error != nil) {
                println(error)
            }else{
                let summonorID_JSON = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers, error: nil) as NSDictionary
                var ID_dict = summonorID_JSON["testsummonor"] as NSDictionary
                var SummonorID: AnyObject? = ID_dict["id"]
                println(SummonorID!)
            }
        })

        task_1.resume()

        let urlpath_summonorLeague = "https://euw.api.pvp.net/api/lol/euw/v2.5/league/by-summoner/"+self.SummonorID+"?api_key= 12345-12345-12345-12345-12345"
        println(urlpath_summonorLeague)

    }


    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }


}

第一个请求发送得很好,我得到了JSON并可以对其进行解析,但是

代码语言:javascript
运行
复制
let urlpath_summonorLeague = "https://euw.api.pvp.net/api/lol/euw/v2.5/league/by-summoner/"+self.SummonorID+"?api_key=12345-12345-12345-12345-12345"
        println(urlpath_summonorLeague)

这部分被发送到fast,所以它仍然缺少"self.SummonorID“,并且"self.SummonorID”在like之后打印:

代码语言:javascript
运行
复制
OUTPUT
testsummonor
https://euw.api.pvp.net/api/lol/euw/v2.5/league/by-summoner/?api_key=12345-12345-12345-12345-12345
00000001

如何解决这个问题,比如“让请求先返回”,然后再进行下一步?

EN

回答 2

Stack Overflow用户

发布于 2014-10-22 22:34:10

您只需在代码中启动一个任务。如果您希望在完成任务之后完成某项任务,那么将其放入完成处理程序中。

票数 0
EN

Stack Overflow用户

发布于 2014-10-22 23:00:55

@芒迪

代码语言:javascript
运行
复制
import UIKit

var summonorname:String = ""

class ViewController: UIViewController {
    var SummonorID = ""


    @IBOutlet weak var Input: UITextField!
    @IBAction func SubmitBT(sender: AnyObject) {
        summonorname = Input.text
        println(summonorname)

        let urlpath_summonorID = "https://euw.api.pvp.net/api/lol/euw/v1.4/summoner/by-name/"+summonorname+"?api_key=12345-12345-12345-12345-12345"


        let url_summonorID = NSURL(string: urlpath_summonorID)
        let session_1 = NSURLSession.sharedSession()
        let task_1 = session_1.dataTaskWithURL(url_summonorID, completionHandler: {data,response, error -> Void in
            if (error != nil) {
                println(error)
            }else{
                let summonorID_JSON = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers, error: nil) as NSDictionary
                var ID_dict = summonorID_JSON["testsummonor"] as NSDictionary
                var SummonorID: AnyObject? = ID_dict["id"]
                println(SummonorID!)
let urlpath_summonorLeague = "https://euw.api.pvp.net/api/lol/euw/v2.5/league/by-summoner/"+self.SummonorID+"?api_key= 12345-12345-12345-12345-12345"
        println(urlpath_summonorLeague)

            }
        })

        task_1.resume()


    }


    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }


}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26509284

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档