Swift Enum 如何符合协议的变量集合和获取?



my code:

public protocol ApiRequestBaseObjProtocol {
var param:[String:Any] { get set }
var path:String {get}
}
extension ApiRequestBaseObjProtocol {
var param: [String : Any] {
get {
var key = "(self.path)"
return (objc_getAssociatedObject(self, &key) as? [String : Any]) ?? [:]
}
set(newValue) {
var key = "(self.path)"
objc_setAssociatedObject(self, &key, newValue, .OBJC_ASSOCIATION_RETAIN_NONATOMIC)
}
}
}
enum MeApi : ApiRequestBaseObjProtocol {
public var path: String {
return "test/api/xxx"
}
}

at param get{} method : objc_getAssociatedObject(self, &key( aways be nil.我想知道为什么?谢谢!!

您正在创建两个单独的键,因此您的&key指向getter和setter中的两个独立事物。 尝试将key创建为静态常量。 每 NSHipster:

通常建议它们键为静态字符,或者更好的是指向静态字符的指针。基本上,一个任意值,它保证是常量、唯一且限定在 getter 和 setter 中使用的范围:

最新更新