dev*_*os1 15 arrays protocols swift xcode6
Swift的协议实现现在让我疯狂.我有observers
一个定制协议定义的数组Observing
,我试图从给定元素的数组中删除一个元素,但Swift抱怨Observing
没有实现Identifiable
(我认为这实际上是我自己的另一个协议,除非还有一个系统协议称为).我想要做的就是参考比较并删除实际对象.我不关心对对象进行任何比较.
var observers = [Observing]()
func removeObserver( observer: Observing ) {
for i in 0 ..< self.observers.count {
if self.observers[i] == observer { // <='Observing' is not convertible to 'Identifiable'...?
self.observers.removeAtIndex(i)
break
}
}
}
Run Code Online (Sandbox Code Playgroud)
ahr*_*uss 23
该==
运营商检查斯威夫特价值的平等,以及有没有为它的默认实现.你想要的是引用相等,你可以得到使用===
和!==
斯威夫特.
有关详细信息,请参阅文档.
身份运营商
因为类是引用类型,所以多个常量和变量可以在后台引用同一个类的单个实例.(对于结构和枚举,情况也是如此,因为它们在分配给常量或变量或传递给函数时总是被复制.)
有时可以找出两个常量或变量是否完全引用类的实例.为了实现这一点,Swift提供了两个身份运算符:
与(===)相同不同于(!==)
请注意,要使===
操作员工作,对象必须符合AnyObject
协议.您可以通过使用":class"后缀协议来保证这一点,如下所示:
protocol SomeProtocol : class { ... }
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1939 次 |
最近记录: |