Tag: 快速协议

typesNSObject的值 – >() – > ** ViewController不符合指定的types***委托

我收到以下错误: 我的协议是这样的: protocol RecorderDelegate { func finishedRecordingWithUrl(URL: NSURL) } 有人可以解释为什么自己不符合协议时,它似乎是?

所有符合协议的类inheritance默认实现

我已经为我的所有UIViewController子类添加了一个方法,它允许我从类和它内部的故事板实例化它。 所有的方法都遵循这种格式: class func instantiateFromStoryboard() -> CameraViewController? { let storyboard = UIStoryboard(name: "Camera", bundle: nil) let initial = storyboard.instantiateInitialViewController() guard let controller = initial as? CameraViewController else { return nil } return controller } 相反 ,我想做一个协议, Instantiatable ,需要上面的方法以及一个variablesstoryboardName: String 。 然后,我想扩展这个Instantiatable所以它包含一个类似于上面的实现。 我的目标是我可以说,一个UIViewController坚持这个协议,我所要定义的是storyboardName 。 我觉得我接近这个实现: protocol Instantiatable { var storyboardName: String { get } func instantiateFromStoryboard() […]

传递一个Swift类作为参数,然后调用一个类方法

我希望能够将一个类作为variables存储,所以我可以稍后调用类方法,如下所示: class SomeGenericItem: NSObject { var cellClass: AnyClass init(cellClass: AnyClass) { self.cellClass = cellClass } func doSomething(p1: String, p2: String, p3: String) { self.cellClass.doSomething(p1, p2: p2, p3: p3) } } class SomeClass: NSObject { class func doSomething(p1: String, p2: String, p3: String) { … } } 我想能够像这样说: let someGenericItem = SomeGenericItem(cellClass: SomeClass.self) someGenericItem.doSomething("One", p2: "Two", […]

具有关联types需求和默认实现的Swift协议

很长一段时间,我一直在使用Swift协议和相关types进行非常艰苦的努力。 我重新开始了基本的真正了解什么是错误的,我遵循这篇文章的types擦除在相关types的要求,由罗布纳皮尔的Swift协议,但我仍然没有运气。 find下面的代码 // An Animal can eat protocol Animal { associatedtype Food func feed(food: Food) -> Void } struct AnyAnimal<Food>: Animal { private let _feed: (Food) -> Void init<Base: Animal where Food == Base.Food>(_ base: Base) { _feed = base.feed } func feed(food: Food) { _feed(food) } } // Kinds of Food struct Grass […]

使Swift类符合协议 – 在静态/类级别

我试图在Swift中构build一个通用的UITableViewController子类,它将容纳任何数量的不同types的表视图单元,而不需要内部知识。 要做到这一点,我试图使用我的模型和我的表格视图单元格的协议。 模型的协议将返回我应该去的单元类,单元的协议将返回问题的答案,例如单元格的高度应该是给定模型的答案。 但是我在协议的工作上遇到了问题,因为在第二个协议中,我想要转到单元的类而不是实例。 该模型的协议如下: protocol JBSTableItemDelegate { func tableCellDelegate() -> JBSTableViewCellInterface } 单元的协议如下: protocol JBSTableViewCellInterface: class { static func registerNibsWithTableView(tableView: UITableView) static func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath?, tableItem: JBSTableItemDelegate) -> CGFloat static func tableView(tableView: UITableView, dequeueReusableCellWithIndexPath indexPath: NSIndexPath, tableItem: JBSTableItemDelegate, delegate: AnyObject) -> JBSTableViewCell } 注意使用关键字“static”。 这些方法是UITableViewCell子类中的类方法,添加静态似乎是我需要做的来validation这些类符合,或者我明白。 当我使用第一个协议的代码看起来像这样,它编译: let tableViewCellInterface = tableItem!.tableViewCellInterface() 这是调用这个方法(作为一个例子): […]

在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 […]