当访问UITextView作为符合UITextInputTraits的对象时遇到奇怪的编译错误:
protocol MyEditingView:UITextInputTraits where Self: UIView {
}
extension UITextView:MyEditingView {
}
class SomeClass {
var editingView:MyEditingView = UITextView()
func someFunc() {
editingView.autocorrectionType = .no
}
}
“无法分配给属性:'自身'是不可变的”
但是如果在协议中显式声明了属性,则不 从UITextInputTraits继承,它已成功编译。
protocol MyEditingView where Self: UIView {
var autocorrectionType: UITextAutocorrectionType { get set }
}
并且属性声明与UITextInputTraits中的相同。
Swift 4.2,XCode 10.1
答案 0 :(得分:1)
autocorrectionType属性是可选,但是当您在 MyEditingView 中明确声明时,它不再具有可选属性。 我尝试在MyEditingView中将其设置为可选属性,并遇到相同的编译错误。