Ошибка компилятора Swift: "Тип" Водяной знак "не соответствует протоколу" ViewModifier""

Я хочу добавить ViewModifier, как описано в следующем руководстве Пола Хадсона (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))
    }
}

Но я получаю следующие ошибки:

Я попытался воспроизвести это в другом проекте, но там все работает как положено. Я пробовал уже очистить папку сборки, удалить производные данные, перезапустить Xcode, перезагрузить Mac.

Есть идеи, как решить проблему?

2 ответа

Решение

Я сталкивался с этой ошибкой раньше, и как сказал @Asperi, это проблема конфликта имен. Может быть другая сущность, также названная Content в проекте.

И изображения для справки:

Я думаю у вас конфликт имен, т.е. есть еще одна сущность с именем Watermarkв вашем проекте (или видимым из других частей), поэтому постарайтесь сделать этот модификатор уникальным. подобно

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

extension View {
    func watermarked(with text: String) -> some View {
        self.modifier(WatermarkModifier(text: text))
    }
}  
Другие вопросы по тегам