Belirli bir protokole uygun nesneleri depolayabilen bir sınıf oluşturmak istiyorum. Nesneler yazılı bir dizide saklanmalıdır. Swift dokümantasyon protokollerine göre tip olarak kullanılabilir:
Bir tür olduğundan, aşağıdakiler de dahil olmak üzere diğer türlere izin verilen birçok yerde bir protokol kullanabilirsiniz:
- Bir işlev, yöntem veya başlatıcıda parametre türü veya dönüş türü olarak
- Sabit, değişken veya özellik türü olarak
- Bir dizideki, sözlükteki veya başka bir kaptaki öğelerin türü olarak
Ancak aşağıdakiler derleyici hataları oluşturur:
'SomeProtocol' Protokolü yalnızca Öz veya ilişkili tür gereksinimleri olduğundan genel bir kısıtlama olarak kullanılabilir
Bunu nasıl çözmeniz gerekiyor:
protocol SomeProtocol: Equatable {
func bla()
}
class SomeClass {
var protocols = [SomeProtocol]()
func addElement(element: SomeProtocol) {
self.protocols.append(element)
}
func removeElement(element: SomeProtocol) {
if let index = find(self.protocols, element) {
self.protocols.removeAtIndex(index)
}
}
}