protocol TTTT {
var sid: String? { get set }
}
class ViewController: UIViewController {
var sid: String = ""
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
}
extension ViewController: TTTT {
var sid: String? {
get {
}
set {
}
}
}
error: Invalid redeclaration of 'sid'
Why are you surprised ?
1. protocol TTTT {
2.
3. var sid: String? { get set }
4.
5. }
6.
7. class ViewController: UIViewController {
8.
9. var sid: String = ""
10.
11. override func viewDidLoad() {
12.
13. super.viewDidLoad()
14.
15. // Do any additional setup after loading the view.
16.
17. }
18. }
19.
20. extension ViewController: TTTT {
21.
22. var sid: String? {
23.
24. get {
25. // Need some return value
26. }
27.
28. set {
29.
30. }
31. }
32. }
Line 22, whatever type you give to sid
var sid: String? {
is a redeclaration of the class property at line 9:
var sid: String = ""
You would have the same error with
var sid: String? = ""
Of course, the following does work:
protocol TTTT {
var sid2: String? { get set }
}
class ViewController: UIViewController {
var sid: String? = ""
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
sid = sid2 // <<-- set sid property
}
}
extension ViewController: TTTT {
var sid2: String? {
get {
return ""
}
set {
}
}
}
Note: it is not a good practice to reuse same names in such situations.