在Swift中,如何声明符合一个或多个协议的特定类型的变量?
在Swift中,我可以通过声明如下来显式设置变量的类型: var object: TYPE_NAME 如果我们想更进一步,并声明一个符合多种协议的变量,可以使用protocol声明式: var object: protocol<ProtocolOne,ProtocolTwo>//etc 如果我想声明一个符合一个或多个协议并且也是特定基类类型的对象,该怎么办?相当于Objective-C的样子如下: NSSomething<ABCProtocolOne,ABCProtocolTwo> * object = ...; 在Swift中,我希望它看起来像这样: var object: TYPE_NAME,ProtocolOne//etc 这使我们能够灵活处理基本类型的实现以及协议中定义的添加接口。 还有其他更明显的方式可能会让我丢失吗? 例 例如,假设我有一家UITableViewCell工厂负责返回符合协议的单元。我们可以轻松地设置一个泛型函数来返回符合协议的单元格: class CellFactory { class func createCellForItem<T: UITableViewCell where T:MyProtocol >(item: SpecialItem,tableView: UITableView) -> T { //etc } } 稍后我想在利用类型和协议的同时使这些单元出队 var cell: MyProtocol = CellFactory.createCellForItem(somethingAtIndexPath) as UITableViewCell 这会返回错误,因为表视图单元格不符合协议... 我想能够指定单元格是a …