Saya ingin membuat kelas yang dapat menyimpan objek yang sesuai dengan protokol tertentu. Objek harus disimpan dalam array yang diketik. Menurut protokol dokumentasi Swift dapat digunakan sebagai tipe:
Karena ini adalah tipe, Anda dapat menggunakan protokol di banyak tempat di mana tipe lain diperbolehkan, termasuk:
- Sebagai tipe parameter atau tipe kembalian dalam sebuah fungsi, metode, atau penginisialisasi
- Sebagai jenis konstanta, variabel, atau properti
- Sebagai tipe item dalam larik, kamus, atau wadah lainnya
Namun yang berikut ini menghasilkan kesalahan kompilator:
Protokol 'SomeProtocol' hanya dapat digunakan sebagai batasan umum karena memiliki Persyaratan Jenis Sendiri atau terkait
Bagaimana Anda bisa menyelesaikan ini:
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)
}
}
}