gpt4 book ai didi

swift - 如何在 set 方法中快速呈现字典?

转载 作者:行者123 更新时间:2023-11-28 08:05:22 24 4
gpt4 key购买 nike

我正在尝试从字典中对这个数据管理器类执行设置和获取方法,但我不知道如何在设置和获取方法中插入字典的值(我已经将其从Dic 的数组)谢谢

class DataManager {

private static var sharedInstance: DataManager?
private var recordsArray: [[String:String]] = []

private let defaults = UserDefaults.standard

let userRecord: String = "userRecord";

private init(){}

public static func getInstance()-> DataManager{
if DataManager.sharedInstance == nil {
DataManager.sharedInstance = DataManager()
}
return DataManager.sharedInstance!
}


//here is my problem - set and get methods
//I don't know how to move the parameters

public func setRecordsArray([_:String,path:String]) {
self.recordsArray.append(?);
defaults.set(self.recordsArray, forKey: self.userRecord)
}
// again the same problem

public func getRecordsArray() -> [String] {
let a = self.defaults.array(forKey: self.userRecord);
return a as! [String];
}
}

最佳答案

回答您的问题的关键是了解您要设置和获取的变量类型。

在这种情况下,recordsArray 变量是字符串值和键的字典数组:[[String:String]]

因此,传递此参数的一种方法是创建一个与应设置的类型相同的变量:

public func setRecordsArray(array:[[String:String]])  {
self.recordsArray = array
defaults.set(self.recordsArray, forKey: self.userRecord)
}

它只是更新 self.recordsArray 变量的值并设置用户默认值。

get 方法的工作原理类似,但它返回的变量与应返回的类型相同。

A ? 被添加到返回值中,因为如果没有保存的用户默认值,该方法返回 nil:

public func getRecordsArray() -> [[String:String]]?{
if let array = defaults.object(forKey: self.userRecord) as? [[String:String]]{
self.recordsArray = array
return array
}
return nil
}

此外,您还可以创建一个用于在数组中插入元素的 set 方法。在这种情况下,参数类型必须类似于 [String:String],此数组的元素类型:

public func setRecord(record:[String:String])  {
if let array = defaults.object(forKey: self.userRecord) as? [[String:String]]{
self.recordsArray = array
self.recordsArray.append(record)
defaults.set(self.recordsArray, forKey: self.userRecord)
} else{
self.recordsArray.append(record)
defaults.set(self.recordsArray, forKey: self.userRecord)
}
}

关于swift - 如何在 set 方法中快速呈现字典?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45327056/

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