gpt4 book ai didi

swift - 为什么我不能在 Swift 中将字符串数据分配给我的 nsuserdefaults?

转载 作者:行者123 更新时间:2023-11-28 12:52:42 25 4
gpt4 key购买 nike

我调用了我的网络服务,它获取了 3 个字符串值,我想永久存储它们,所以我考虑使用 nsuserdefaults。这是我的代码:

var username = json["id"]
var googleUserId = json["g_username"]
var facebookUserId = json["f_username"]

NSUserDefaults.standardUserDefaults().setObject(username, forKey: "username")
NSUserDefaults.standardUserDefaults().setObject(googleUserId, forKey: "googleUserId")
NSUserDefaults.standardUserDefaults().setObject(facebookUserId, forKey: "facebookUserId")


NSUserDefaults.standardUserDefaults().synchronize()

我得到的错误是:

Cannot convert value of type 'JSON' to expected argument type 'AnyObject?'

这里有什么问题?

==== 编辑

很抱歉之前没有提到 - json 变量来自 alamofire 响应,这就是它在我的代码中的样子:

Alamofire.request(.POST, "http://mywebservice", parameters: par) .response { 
(request, response, data, error) in
if(error == nil){
var json = JSON(data: data!)

最佳答案

您正在使用 SwiftyJSON,因此您还应该使用 SwiftyJSON 的功能。 :)

无需使用 SwiftyJSON 来“向下转换”字典结果,它已经完成了!

每个 SwiftyJSON 对象都有可选的 getter 和非可选的 getter。

您有一个结果为字符串的字段?使用 .string:

if let username = json["id"].string {
defaults.setObject(username, forKey: "username")
}

对于整数,它是 .int,对于数组,它是 .array,等等。

还有非可选的 getter,它们在属性中添加了“Value”一词:

let username = json["id"].stringValue
defaults.setObject(username, forKey: "username")

但是警告!一个非可选的 getter 将假定值在这里并强制解包,所以如果它是 nil,它将崩溃:json["id"].stringValuejson[ "id"].string!.

关于swift - 为什么我不能在 Swift 中将字符串数据分配给我的 nsuserdefaults?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35967934/

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