草庐IT

UIApplicationDelegate_Protocol

全部标签

swift 2.0 : Creating a Collection Type of Objects that conform to a Generic Protocol

例如:protocolSomeProtocol{typealiasTfuncdoSomething(something:T)}leta=Array()我想要一个数组,它是一个符合SomeProtocol的对象数组。这在理论上似乎很好,但我收到以下错误消息:Cannotbeusedasagenericconstraintbecauseitcontainsassosciatedtyperequirements.我想这是有道理的,毕竟Array也是一个通用结构,因此编译器将无法确定SomeProtocol和的实际类型数组是通用的。所以我的问题是-我觉得我应该能够拥有一个符合SomeProto

ios - ViewController 不符合 Swift 中的 GMSAutoCompleteViewControllerDelegate 协议(protocol)

我收到错误:“ViewController”不符合以下代码中的协议(protocol)“GMSAutoCompleteViewControllerDelegate”。classMapViewController:UIViewController,CLLocationManagerDelegate,GMSMapViewDelegate,GMSAutocompleteViewControllerDelegate{...@IBActionfuncautocompleteClicked(sender:AnyObject){letautoCompletController=GMSAutocomp

swift - Swift 中的关键字协议(protocol)(大写 P)是什么

刚刚发现可以直接输入Protocol,而且它的Type和其他2种情况不同实际上你可以尝试初始化它并得到一条错误消息,提示某种东西但是Protocol在Swift中究竟做了什么? 最佳答案 Protocol是在Objective-C运行时定义的类代表一个Objective-C协议(protocol)。示例:letp=objc_getProtocol("NSObject")!print(p.dynamicType)//Output:"Protocol"objc_getProtocol声明为/***Returnsaspecifiedpro

ios - 协议(protocol)中的静态变量

我有一个协议(protocol)A,它有一个静态变量x。B是A的实现。在C类中,我传递了B的一个实例并将其分配给a。如何从中访问2(B类中x的值)?protocolA{staticvarx:Int{get}}classB:A{staticvarx:Int{return2}}classC{//instanceofBisassignedtoa.leta:Aprint(a.x)} 最佳答案 static变量属于类,而不是实例。您可以通过调用dynamicType来引用该类:print(a.dynamicType.x)

swift - 符合具有通用功能的协议(protocol)的变量

我有一个看起来像这样的协议(protocol):protocolMyProtocol{associatedtypeSpeedTypevarname:String{getset}funcforward(_:SpeedType)}我制作了2个符合此协议(protocol)的简单类:classA:MyProtocol{typealiasSpeedType=Doublevarname:Stringinit(name:String){self.name=name}funcforward(_s:Double){print("Moving\(s)km/h")}}classB:MyProtocol{t

swift - 如何使用私有(private)集扩展协议(protocol)?

我正在编写一个带有只读标签的协议(protocol)。我想扩展它并给它一个默认实现,其中符合类型是UITextView。代码:protocolCountingView{varkeyboardLabel:UILabel{get}}extensionCountingViewwhereSelf:UITextView{varkeyboardLabel:UILabel{get{letlabel=UILabel()label.textColor=UIColor.whitelabel.translatesAutoresizingMaskIntoConstraints=falsereturnlabel

json - 如何使用 Decodable 协议(protocol)将此 JSON 转换为 Swift 结构?

注意:这个问题我已经看过了->HowdoIusecustomkeyswithSwift4'sDecodableprotocol?但它没有解释如何编码/解码枚举这是我想要的结构:structMyStruct:Decodable{letcount:PostType}enumPostType:Decodable{casefast(value:Int,value2:Int)caseslow(string:String,string2:String)}现在我知道我希望我的结构看起来如何,问题是:我不知道init函数在PostType枚举中应该是什么样子。我使用下面的代码来帮助我快速构建JSON。

Swift keyPath 与协议(protocol)

我了解keyPaths的基本概念,但不了解其用例。如果您已经知道实例的类型,则可以轻松访问它们的属性。如果你不这样做,协议(protocol)已经支持只读、读写属性。有人可以向我解释我所缺少的吗?除了keyPaths或当keypaths比协议(protocol)更好时,我们不能用协议(protocol)做什么? 最佳答案 Ifyoualreadyknowthetypeoftheinstance,youcanaccesstheirpropertieseasily.Ifyoudon’t,protocolalreadysupportsre

swift - 在 Swift 中使用 NSCoding 协议(protocol)

我在Swift中实现NSCoding时遇到了问题。我构建了以下基本类来演示该问题。当我运行此代码时,出现运行时错误,例如:“SForwarding:警告:类‘_TtC4Projet5Test’的对象0x102801f60未实现methodSignatureForSelector:--前方有问题”我看到其他示例代码包括NSObject作为基类,但我使用的是纯Swift实现,NSCoding的文档似乎没有将此作为要求提及。如有任何帮助,我们将不胜感激!谢谢。classTest:NSCoding{vararray:[String]?init(){}requiredinit(coderdeco

Swift 结构采用具有静态读写属性的协议(protocol)不符合?

为什么不能在Swift1.2中编译?protocolProto{staticvarname:String{getset}}structStruct:Proto{staticvarname:String="name"}(在Swift1.1中,只需将协议(protocol)声明中的static替换为class即可。同样的问题。)编译器提示我不符合协议(protocol)。但为什么我不是?很容易证明Struct中的静态属性name是可读可写的,所以我肯定满足了协议(protocol)的精神。我有一些额外的观察:如果我从协议(protocol)要求中删除set,问题就会消失。如果我保留set,