通用绑定扩展返回等效警告

问题描述 投票:0回答:1

下面的代码给了我一个警告:

同类型要求使得泛型参数‘Tagger’和‘Value’等价;这是 Swift 6 中的错误

虽然这仍然有效,但我更愿意摆脱这个警告。 我见过删除通用解决了问题的情况,但我确实需要将其设为通用,以便我可以从协议“Taggable”访问“标签”。

有人知道如何解决这个问题吗?

protocol Taggable: Identifiable {
    
    var tag: Self { get }
}

extension Binding {
    
    func taggable<Tagger: Taggable>() -> Binding<Value> where Value == Tagger {
        return Binding(
            get: { self.wrappedValue.tag },
            set: { self.wrappedValue = $0 }
        )
    }
}
swift swiftui binding
1个回答
0
投票

答案如下:

protocol Taggable: Identifiable {
    
    var tag: Self { get }
}

extension Binding where Value: Taggable {
    
    func taggable() -> Binding<Value> {
        return Binding(
            get: { self.wrappedValue.tag },
            set: { self.wrappedValue = $0 }
        )
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.