gpt4 book ai didi

ios - Swift JSON 无法获取第二个变量

转载 作者:行者123 更新时间:2023-11-29 02:48:10 25 4
gpt4 key购买 nike

我在 Laravel (PHP) 中为我的应用构建了一个后端 API。我调用的方法(创建用户)的返回值是:

{"success":true,"userid":"23"}

但是在 Swift 中访问 userid 时它返回一个空值?它可以访问 success 变量。

这是我的请求的代码:

// create the user
var request = NSMutableURLRequest(URL: NSURL(string: "http://localhost/laravel/myapi/public/createUser"))
var session = NSURLSession.sharedSession()

request.HTTPMethod = "POST"

var params = ["username":txtUsername.text, "email":txtEmail.text, "password":txtPassword.text] as Dictionary
var err: NSError?
request.HTTPBody = NSJSONSerialization.dataWithJSONObject(params, options: nil, error: &err)
request.addValue("application/json", forHTTPHeaderField: "Content-Type")
request.addValue("application/json", forHTTPHeaderField: "Accept")
var task = session.dataTaskWithRequest(request, completionHandler: {data, response, error -> Void in
// println("Response: \(response)")
var strData = NSString(data: data, encoding: NSUTF8StringEncoding)
println("Body: \(strData)")
var err: NSError?
let json = NSJSONSerialization.JSONObjectWithData(data, options: .AllowFragments & .MutableLeaves, error: &err) as NSDictionary

if(err) {
println(err!.localizedDescription)
}
else {
var success = json["success"] as? Int
if(success == 1) {
var id = json["userid"] as? Int
self.lblTaken.text = "\(id)"
}
}
})

task.resume()

println("Body:\(strData)") 打印出:

Body: {"success":true,"userid":"23"}

但是当尝试访问 userid 变量时,它返回 nil

我在尝试访问用户 ID 时是否做错了什么?

更新

如果我打印出来:

println(json.valueForKey("userid"))

它打印出 userid,但如果我将它分配给变量,该变量仍然返回一个 null

最佳答案

userId 以字符串形式出现。所以,问题是,您尝试使用 as 将字符串转换为整数?并失败。

来自苹果文档:

作为?运算符执行表达式到指定类型的条件转换。作为?运算符返回指定类型的可选值。在运行时,如果转换成功,则将表达式的值包装在可选值中并返回;否则,返回值为 nil。如果强制转换为指定类型肯定会失败,则会引发编译时错误。例如,转换为既不是表达式类型的子类也不是父类(super class)的类型是错误的。

关于ios - Swift JSON 无法获取第二个变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24848633/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com