在Swift中使用未解析的标识符“参数”

所以我在尝试运行脚本时遇到此错误</ p>


使用未解析的标识符'参数'</ p>
</ blockquote>

以下是获取CSRF令牌然后在</ p>

中记录用户的代码 var username = usernameField.text
var password = passwordField.text

var token = String()
var parameters = String?()

//获取CSRF令牌
Alamofire .request(.GET,“https:// localhost / api / csrf”)
。响应JSON {(请求,响应,数据,错误)
var jsonParse = data as NSDictionary
var responseJSON = JSON(jsonParse)

if(responseJSON [“success”])== false {
println(responseJSON [“error”])
}
else {
let token = responseJSON [“data”]。string

让参数= [
“user”:用户名,
“密码”:密码,
“csrf”:token
]
}

}

Alamofire.request(.POST,“https:// localhost / api / login”,参数:参数)
.responseJSON {(请求,响应,JSON,错误) in
println(token)
println(JSON)

}
</ code> </ pre>

我不知道为什么我无法访问参数 </ code>超出范围,考虑到我已经像这样启动它</ p>

  var parameters = String?()
</ code> </ pre>
\ n

有什么想法吗?</ p>
</ div>

展开原文

原文

So I get this error when trying to run my script

Use of unresolved identifier 'parameters'

And here's the code to get a CSRF token then log the user in

    var username = usernameField.text
    var password = passwordField.text

    var token = String()
    var parameters = String?()

    //Get CSRF token
    Alamofire.request(.GET, "https://localhost/api/csrf")
        .responseJSON{(request, response, data, error) in
            var jsonParse = data as NSDictionary
            var responseJSON = JSON(jsonParse)

            if(responseJSON["success"]) == false{
                println(responseJSON["error"])
            }
            else{
                let token = responseJSON["data"].string

                let parameters = [
                    "user": username,
                    "password": password,
                    "csrf": token
                ]
            }

    }

    Alamofire.request(.POST, "https://localhost/api/login", parameters: parameters)
        .responseJSON{(request, response, JSON, error) in
            println(token)
            println(JSON)

    }

I don't see why I can't access parameters out of the scope considering that I already initiated it like so

var parameters = String?()

Any ideas?

1个回答



您在请求块之外定义了参数</ em>。 在您的请求块中,您可以定义一个常量变量,该变量只能在该块内部访问。 因此,删除让</ strong>,然后只写:</ p>

  parameters = [
“user”:username,
“password”:password,
“csrf”:token
]
</ code> </ pre>

我认为第二个请求应在收到第一个请求的响应后进行? 如果是这样,请将第二个请求放在第一个请求的回调中。</ p>

编辑:同样的问题是“令牌”,所以在这里也一样。</ p>
< / DIV>

展开原文

原文

You defined your parameters outside your request-Block. Inside your request-Block you define a constant variable, which is only accessible inside that block. Therefore remove that let and just write:

parameters = [
                "user": username,
                "password": password,
                "csrf": token
            ]

And I think the second request should be made after you get the response of the first request? If so, put the second request inside the callback of your first request.

EDIT: the same problem goes for "token", so do the same here.

dongli7236
dongli7236 哦,是的,谢谢。
接近 6 年之前 回复
dongshan8194
dongshan8194 这同样适用于令牌
接近 6 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐