Swift编译器错误:“类型'水印'不符合协议'ViewModifier'”

问题描述

我想添加一个ViewModifier,如Paul Hudson(https://www.hackingwithswift.com/books/ios-swiftui/custom-modifiers)的以下教程所述。 我的ViewModifier是:

import SwiftUI

struct Watermark: ViewModifier {
    var text: String

    func body(content: Content) -> some View {
        ZStack(alignment: .bottomTrailing) {
            content
            Text(text)
                .font(.caption)
                .foregroundColor(.white)
                .padding(5)
                .background(Color.black)
        }
    }
}

extension View {
    func watermarked(with text: String) -> some View {
        self.modifier(Watermark(text: text))
    }
}

但是出现以下错误

enter image description here

我试图在另一个项目中重现此内容,但它确实按预期工作。我已经尝试清理构建文件夹,删除派生数据,重新启动Xcode,重新启动Mac。

关于如何解决此问题的任何想法?

解决方法

我认为您的姓名存在冲突。您的项目中还有另一个名为Watermark的实体(或从其他部分可见),因此请尝试使此修饰符唯一。喜欢

struct WatermarkModifier: ViewModifier {
 // .. other code
}

extension View {
    func watermarked(with text: String) -> some View {
        self.modifier(WatermarkModifier(text: text))
    }
}  
,

在@Asperi所说的命名冲突问题之前,我曾遇到此错误。项目中可能还有另一个名为Content的实体。

图片供参考:

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...