gpt4 book ai didi

ios - 如何在 Swift 中使用 updateValue 添加对象

转载 作者:行者123 更新时间:2023-11-30 14:19:23 25 4
gpt4 key购买 nike

我有一个用户结构,我正在将其转换为 Json 以便能够进入 NSUserDefaults...

import Foundation

struct User {
var name = ""
var stores: [Store] = []

init?(json: [String: AnyObject]) {
if let name = json["name"] as? String,
storesJSON = json["stores"] as? [[String: AnyObject]]
{
self.name = name
self.stores = storesJSON.map { Store(json: $0)! }
} else {
return nil
}
}

init() { }

func toJSON() -> [String: AnyObject] {
return [
"name": name,
"stores": stores.map { $0.toJSON() }
]
}

}

我正在使用数据管理器类(单例)来添加新用户。但我不知道在下面的 addPerson 函数中将什么传递给 updateValue ?或者还有另一种方法可以将此对象放入 NSUserDefaults 中吗?

import Foundation

class DataManager {

static let sharedInstance = DataManager()

var users = [String : User]()

init() {
let userDefaults = NSUserDefaults.standardUserDefaults()

if let var userFromDefaults = userDefaults.objectForKey("users") as? [String : User] {

users = userFromDefaults

}

else {
// add default values later

}


}

var userList: [String] {
var list: [String] = []
for userName in users.keys {
list.append(userName)
}
list.sort(<)
return list
}

func addPerson(newUserName: String) {
users.updateValue(User(), forKey: newUserName)
// saveData()
}

最佳答案

您应该更改 addPerson 函数的接口(interface),使用 addPerson(newUser: User) 而不是使用 addPerson(newUserName: String)正如@iosDev82 所说:

// Because your addPerson function needs two parameters: a name and a user object
func addPerson(newUser: User) {
users.updateValue(newUser, forKey: newUser.name)
// saveData()
}

这样你就可以:

let newName = textField.text.capitalizedString
let newUser = User(["name": newName, "stores" : []])

DataManager.sharedInstance.addPerson(newUser)

关于ios - 如何在 Swift 中使用 updateValue 添加对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30683460/

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