Tag: 快速协议

Swift类的方法必须由子类重写

有没有一个标准的方法来做一个“纯虚函数”在Swift中,即。 一个必须被每个子类重写,如果不是,会导致编译时错误?

在swift中使用协议作为数组types和函数参数

我想创build一个可以存储符合某个协议的对象的类。 对象应该存储在一个types数组中。 根据Swift文档协议可以作为types使用: 因为它是一种types,所以可以在许多其他types允许的地方使用协议,包括: 作为函数,方法或初始值设定项中的参数types或返回types 作为常量,variables或属性的types 作为数组,字典或其他容器中的项目的types 但是,以下生成编译器错误: 协议“SomeProtocol”只能用作通用约束,因为它具有自我或相关types的要求 你应该如何解决这个问题: 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) } } }

如何在Swift协议中定义可选的方法?

在Swift中可能吗? 如果没有,那么是否有解决方法呢?

在Swift中,我怎么能声明一个符合一个或多个协议的特定types的variables?

在Swift中,我可以通过声明如下来明确地设置一个variables的types: var object: TYPE_NAME 如果我们想更进一步,并声明一个符合多个协议的variables,我们可以使用protocol声明: var object: protocol<ProtocolOne,ProtocolTwo>//etc 如果我想声明一个符合一个或多个协议并且也是特定基类types的对象呢? Objective-C的等价物看起来像这样: NSSomething<ABCProtocolOne,ABCProtocolTwo> * object = …; 在Swift中,我期望它看起来像这样: var object: TYPE_NAME,ProtocolOne//etc 这使我们能够灵活处理基本types的实现以及协议中定义的添加接口。 还有另一个更明显的方式,我可能会失踪? 例 作为一个例子,说我有一个UITableViewCell工厂负责返回符合协议的单元格。 我们可以很容易地设置一个返回符合协议的单元的通用函数: class CellFactory { class func createCellForItem<T: UITableViewCell where T:MyProtocol >(item: SpecialItem,tableView: UITableView) -> T { //etc } } 后来我想把这些细胞出院,同时利用types和协议 var cell: MyProtocol = CellFactory.createCellForItem(somethingAtIndexPath) as UITableViewCell 这将返回一个错误,因为表视图单元格不符合协议… 我想能够指定单元格是一个UITableViewCell并符合variables声明中的MyProtocol ? 理由 如果您熟悉Factory […]