Làm sao người ta thiết lập một tài sản không bắt buộc của một giao thức? Ví dụ: UITextInputTraits có một số thuộc tính đọc/ghi tùy chọn. Khi tôi cố gắng sau tôi nhận được một lỗi biên dịch (Không thể gán cho 'keyboardType' trong 'textInputTraits'):Swift: thiết lập một tài sản không bắt buộc của một giao thức
func initializeTextInputTraits(textInputTraits: UITextInputTraits) {
textInputTraits.keyboardType = .Default
}
Thông thường khi truy cập vào một tài sản không bắt buộc của một giao thức bạn thêm một dấu hỏi nhưng điều này không làm việc khi gán một giá trị (lỗi: không thể gán cho là kết quả của biểu thức này):
textInputTraits.keyboardType? = .Default
giao thức trông giống như: (? chưa)
protocol UITextInputTraits : NSObjectProtocol {
optional var keyboardType: UIKeyboardType { get set }
}
Tuy nhiên không thể là của Swift 2.2 – adib
Tuy nhiên không thể là của Swift 4 – Speakus
Và đối với một lý do chính đáng. Sử dụng 'tùy chọn func setSomething (_ :)'. – akashivskyy