草庐IT

UIApplicationDelegate_Protocol

全部标签

Swift:类型不符合协议(protocol) 'ArrayLiteralConvertible'

在我的playground中不断出现错误,提示Set不符合协议(protocol)“ArrayLiteralConvertible”structSet:ArrayLiteralConvertible{typealiasElement=Tprivatevarcontents:[Element:Bool]init(){self.contents=[Element:Bool]()}//easierinitializationinit(_sequence:S){self.contents=[Element:Bool]()Swift.map(sequence){self.contents[$0]

ios - 仅在 DEBUG 配置上符合协议(protocol)

当设置了DEBUG标志时,我试图启用类协议(protocol):#ifDEBUGclassLoginViewController:UIViewController,UITextFieldDelegate{#elseclassLoginViewController:UIViewController{#endif//...}虽然它没有编译,#else行上的“Expecteddeclaration”。 最佳答案 swift中的预处理器指令与您可能习惯使用的不同。Appledocumentation关于这个主题,#if/#else/#end

cocoa - 类似于 Equatable 的 Swift 协议(protocol)

我正在尝试为可进行Lerp(可线性插值)的类型创建一个协议(protocol)。我声明它的方式与Equatable的定义方式类似:protocolLerpable{funclerp(from:Self,to:Self,alpha:Double)->Self}不幸的是,当我尝试为Double实现Lerpable时:funclerp(from:Double,to:Double,alpha:Double)->Double{returnfrom+alpha*(to-from)}extensionDouble:Lerpable{}我得到一个错误:Type'Double'doesnotconfor

swift - 将协议(protocol)<>任意转换为字符串(或其他)

我有一个类叫做User()classUser{varname:String?varemail:String?varid:String?varidentification_number:String?varphone_number:NSMutableArray?varuser_group:String?vardate:NSDate?}我想获取类中的所有变量及其各自的值。在这种情况下,我尝试使用Mirror。funcupdateProfile(user:User){letmirror=Mirror(reflecting:user)forchildinmirror.children{prin

ios - 协议(protocol) var {get}

每当一个协议(protocol)被声明为只有一个getter的var时,我认为这意味着var可以从类内部设置,而不是从外部设置,因为没有“setter”。Playground代码protocolRunningAnimal{varlimbs:Int{get}vartopSpeed:Int{get}}classCheetah:RunningAnimal{varlimbs=4vartopSpeed=120}letcheetah=Cheetah()cheetah.limbs=100print("cheetahlimbs->\(cheetah.limbs)")//prints100如果您仍然可以

swift - 引用符合协议(protocol)的类

假设我有一个如下所示的协议(protocol):protocolFoo{varbar:Bool{getset}}现在我有了符合Foo协议(protocol)的ViewController;classFooViewController:UIViewController,Foo{...}在另一个类中我想做这样的事情:classFooClass{varviewController:UIViewController?//thisshouldconformtoFooprotocolfuncsetViewController(viewController:UIViewController){ifl

具有关联类型的 Swift 协议(protocol)数组

这个问题在这里已经有了答案:HowdoIadddifferenttypesconformingtoaprotocolwithanassociatedtypetoacollection?(1个回答)关闭6年前。我有第一个协议(protocol)protocolProt1{}第二个:protocolProt2{associatedtypeP:Prot1funcdoSomething(param:P)}我怎样才能创建一个类型为Prot2的数组?我试过:varmyArray=[Prot2]()但它给我这个错误:ProtocolProt2canonlybeusedasagenericconstr

ios - 类型 'Any' 不符合协议(protocol) 'Sequence'

我在我的代码中遇到了问题,在尝试解析JSON数据(数组的每个数据,比如它应该如何完成)并尝试设置forin循环时,错误出现了。这是我的代码ifletjsonDataArray=try?JSONSerialization.jsonObject(with:data!,options:[]){print(jsonDataArray)varallStops=[busStops]()foreachDatainjsonDataArray^//thisiswheretheerrorislocated{ifletjsonDataDictionary=eachDataas?[String:AnyObje

ios - `: class` 在协议(protocol)声明中究竟做了什么?

这SOpost很好地解释了如何解决创建weak的delegate的问题。基本上,有两种方法:使用@objc关键字:@objcprotocolMyClassDelegate{}classMyClass{weakvardelegate:MyClassDelegate?}使用:class关键字:protocolMyClassDelegate:class{}classMyClass{weakvardelegate:MyClassDelegate?}我正在尝试进行一些研究,以了解这两种方法之间的确切区别。docs非常清楚如何使用@objc:TobeaccessibleandusableinObj

swift - swift协议(protocol)Hashable中hashValue的性能考虑

除了是一个唯一的整数之外,对于可以插入到SetHashable类型中的hashValue的选择还有任何性能考虑?例如,我选择的整数值的大小会影响后备数组的大小吗?即,如果我将4000的hashValue分配给Hashable类型并将其插入到Set中,则支持数组长度至少需要4000? 最佳答案 hashValue不必是唯一的。在绝大多数情况下,它不能是唯一的(任何大于64位的类型必然具有比其散列更多的可能状态)。您不选择整数的大小。它将始终是Int(这是机器字的大小)。但是,hashValue应该很快,理想情况下是O(1)。它通常用于