属性类型“MyViewModel”与其包装类型的“wrappedValue”属性不匹配

问题描述

我有一个属性包装器来避免处理隐式解包的选项。

它很好用,除非我尝试使用自定义包装器来处理弱属性

@propertyWrapper
public struct WeakMaybeUninitialized<T: AnyObject> {
    
    private weak var storage: AnyObject?
    
    public var wrappedValue: T 
 {
        get { return storage as! T }
        set { storage = newValue }
    }
    
    public init(storage: T? = nil) {
        self.storage = storage
    }
    
    public init() {}
}

假设我有以下协议:

protocol viewmodel: AnyObject {}

现在看起来像这样:

weak var viewmodel: Myviewmodel!

但是当我使用属性包装器时:

@WeakMaybeUninitialized var viewmodel: Myviewmodel

它返回错误属性类型‘Myviewmodel 与其包装类型‘WeakMaybeUninitialized’的‘wrappedValue’属性不匹配”

即使 Myviewmodel 实际上符合 AnyObject,所以我不明白会发生什么。

你知道为什么吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)