作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试从字典中对这个数据管理器类执行设置和获取方法,但我不知道如何在设置和获取方法中插入字典的值(我已经将其从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/
我是一名优秀的程序员,十分优秀!