草庐IT

SMB1Protocol

全部标签

ios - 方法参数需要类型和协议(protocol)

我正在使用Swift并遇到以下问题:假设我有预定义的类Animal://PredefinedclassesclassAnimal{varheight:Float=0.0}我现在用接受动物的构造函数编写类Zoo。但是Zoo希望每只动物都有一个名字,因此定义了Namable协议(protocol)。protocolNamable{varname:String{get}}classZoo{varanimals:Animal[]=[];}您将如何编写一个addAnimal方法,要求作为参数传递的对象是typeAnimal和conform到协议(protocol)Namable?您如何为anim

ios - 静态成员不能用于协议(protocol)元类型 Swift

我正在尝试为我拥有的协议(protocol)类型创建闭包,但出现以下错误Staticmember'menuItemSorter'cannotbeusedonprotocolmetatype'MenuItem.Protocol'这是我尝试在Playground上运行的代码的简化版本。protocolMenuItem{varorder:Int{get}}extensionMenuItem{staticvarmenuItemSorter:(MenuItem,MenuItem)->Bool{return{$0.order我希望能够在MenuItem上有一个可以对menuItem进行排序的类/静

generics - 为什么这个协议(protocol)可以 "only be used as a generic constraint"?

我正在尝试在Swift中执行以下操作:protocolProtocolWithAlias{typealiasT}protocolAnotherProtocol{funcsomeFunc()->ProtocolWithAlias}但我收到错误:Protocol'ProtocolWithAlias'canonlybeusedasagenericconstraintbecauseithasSelforassociatedtyperequirements。有没有可能做这样的事情?错误消息(或者至少是“onlybeusedasagenericconstraint”部分)对我来说似乎没有多大意义。

swift - Swift 中的 Interface Builder、@IBOutlet 和委托(delegate)和数据源协议(protocol)

无法将声明为@IBOutlet的CustomView的委托(delegate)属性连接到InterfaceBuilder中的ViewController–根本无法建立连接。这是代码classCustomView:UIView{@IBOutletvardelegate:CustomViewDelegate?}@objcprotocolCustomViewDelegate{...}classViewController:UIViewController,CustomViewDelegate{...}@objc是因为swiftprotocol,IBOutletpropertycannotha

swift - 如何满足包含初始值设定项的协议(protocol)?

我定义了一个简单的类:classMyClass{varname:String?requiredinit(){println("init")}}我可以像这样在扩展中添加一个新的初始化器:extensionMyClass{convenienceinit(name:String){self.init()self.name=name}}一切正常。但是一旦我在协议(protocol)中定义了新的初始值设定项:protocolMyProtocol{init(name:String)}并使我的扩展符合该协议(protocol):extensionMyClass:MyProtocol{convenie

ios - Swift 在协议(protocol)中声明类函数

我有以下困惑。据我所知,static和class关键字在声明方法时的主要区别是第二个可以在子类中被覆盖。问题但是当我在Swift1.2中这样声明一个协议(protocol)时:protocolMyProtocol{classfuncdummyClassMethod()}编译器报错:Classmethodsareonlyallowedwithinclasses;use'static'todeclareastaticmethod该错误非常具有描述性,因为显然MyProtocol不是一个类,但是我想让一个类func成为协议(protocol)的一部分。我尝试过的我发现如果我在协议(proto

Swift 协议(protocol)错误 : 'weak' cannot be applied to non-class type

Protocols和class-boundProtocols有什么区别,我们应该在Swift中使用哪一个?protocolA:class{...}protocolA{...}当协议(protocol)未定义为:class时尝试添加weak委托(delegate)时出现错误:protocolA{...}weakvardelegate:A给出错误:'weak'cannotbeappliedtonon-classtype或'weak'mustnotbeappliedtonon-class-bound'A';consideraddingaprotocolconformancethathasac

swift - 不支持使用符合协议(protocol) AnyObject 的具体类型

我正在使用Swift2并使用Wea​​kContainer作为存储一组弱对象的方式,很像NSHashTable.weakObjectsHashTable()structWeakContainer{weakvarvalue:T?}publicprotocolMyDelegate:AnyObject{}然后在我的ViewController中声明publicvardelegates=[WeakContainer]但它是错误的UsingMyDelegateasaconcretetypeconformingtoprotocolAnyObjectisnotsupported我看到错误是WeakC

compare - 如何实现 Swift 的 Comparable 协议(protocol)?

如何在Swift中使用Comparable协议(protocol)?在声明中它说我必须实现三个操作=。我把所有这些都放在类里面,但它不起作用。我还需要拥有所有这三个吗?因为应该可以从一个中推导出所有这些。 最佳答案 Comparable协议(protocol)扩展了Equatable协议(protocol)->实现它们在Apple'sReference是Apple的一个示例(在Comparable协议(protocol)引用中),您可以看到应该如何做:不要将操作实现放在类中,而是放在外部/全局范围内。此外,您只需实现来自Compar

ios - Swift 协议(protocol)只能设置吗?

为什么我可以毫无错误地执行此操作:vartestDto=ModelDto(modelId:1)testDto.objectId=2当我定义这个时:protocolDataTransferObject{varobjectType:DtoType{get}varparentObjectId:Int{getset}varobjectId:Int{get}varobjectName:String{getset}}structModelDto:DataTransferObject{varobjectType:DtoTypevarparentObjectId:IntvarobjectId:Intv