说我想在我的一个结构中创建一个函数,它可以接受一个字符串,整数或任何类型作为类型,并且我想根据我传递的类型参数返回我得到的东西。是int string或者其他什么,我该怎么做?我试过这个,但它似乎没有用,调用有效,但程序在我尝试返回值时崩溃
static func getAny(type: Any, key: String) -> Any? {return data.value(forKey: key) as Any}
答案 0 :(得分:2)
对于您描述的示例:
class MyClasss {
static let data = UserDefaults.standard
static func get<Type>(key: String) -> Type? {
return data.value(forKey: key) as? Type
}
}
let string = MyClasss.get(key: "stringKey") as String?
let int: Int? = MyClasss.get(key: "intKey")
答案 1 :(得分:0)
如果您只是想找到一种从UserDefaults获取和设置变量的简洁方法。这是我个人喜欢在我的项目中这样做的方式。
class ApiStorage {
static var token : String? {
get {
return UserDefaults.standard.string(forKey: "bearerToken")
}
set {
UserDefaults.standard.set(newValue, forKey: "bearerToken")
}
}
}
然后访问UserDefaults就像
一样简单var token = ApiStorage.token
或者写入UserDefaults就像
一样简单ApiStorage.token = "AUTHTOKEN"