我如何在swift中创建通用返回类型?

时间:2017-05-03 00:39:18

标签: swift

说我想在我的一个结构中创建一个函数,它可以接受一个字符串,整数或任何类型作为类型,并且我想根据我传递的类型参数返回我得到的东西。是int string或者其他什么,我该怎么做?我试过这个,但它似乎没有用,调用有效,但程序在我尝试返回值时崩溃

  static func getAny(type: Any, key: String) -> Any? {return data.value(forKey: key) as Any}

2 个答案:

答案 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"