草庐IT

SMB1Protocol

全部标签

ios - 协议(protocol)扩展,不符合协议(protocol)

我正在创建一个名为MyFramework的框架,其中包含LoginProtocol.swift,它具有一些默认行为importUIKitpublicprotocolLoginProtocol{funcappBannerImage()->UIImage?funcappLogoImage()->UIImage?}extensionLoginProtocol{funcappBannerImage()->UIImage?{return(UIImage(named:"login_new_top"))}funcappLogoImage()->UIImage?{return(UIImage(name

swift - 不支持使用 'Protocol' 作为符合协议(protocol) 'Protocol' 的具体类型

我有以下快速代码:protocolAnimal{varname:String{get}}structBird:Animal{varname:StringvarcanEat:[Animal]}structMammal:Animal{varname:String}extensionArraywhereElement:Animal{funcmammalsEatenByBirds()->[Mammal]{vareatenMammals:[Mammal]=[]self.forEach{animalinifletbird=animalas?Bird{bird.canEat.forEach{eate

swift - 可编码结构包含协议(protocol)属性

我有一个继承自codable的协议(protocol)protocolOrderItem:Codable{varamount:Int{getset}varisPaid:Bool{getset}}一个结构符合这个协议(protocol)structProductItem:OrderItem{varamount=0varisPaid=falsevarprice=0.0}但是,当我将这个结构放入可编码结构中时,出现错误structOrder:Codable{varid:Stringvarsn:String=""varitems:[OrderItem]=[]varcreatedAt:Int64

ios - Swift 的 equatable 协议(protocol)一致性检查

我正在尝试扩展Swift的Array具有以下功能的类:funccontainsObjectIdenticalTo(obj:T)->Bool{//objectPassingTestreturnsthefirstobjectpassingthetestreturnobjectPassingTest{xinx==obj}}显然,这不会编译,因为编译器还不知道==是否存在。为T类型实现.然后我将代码更改为这个funccontainsObjectIdenticalTo(obj:T)->Bool{returnobjectPassingTest{xinassert(xisEquatable&&obj

swift - 强制子类快速实现协议(protocol)

如何强制子类实现父类中声明的协议(protocol)?我试过这个:protocolMyProtocol{varmyVar:String{get}}classParentClass:MyProtocol{varmyVar="parent"}classChildClass:ParentClass{}但我的子类不会强制我覆盖myVar。这可能吗?非常感谢,摩根 最佳答案 Swift没有这样的功能。您所能做的就是发出运行时错误。而且你必须使用computedproperty覆盖属性。像这样:protocolMyProtocol{varmyV

符合具有默认实现的协议(protocol)的类型的 Swift 最小实现

我正在尝试使我自己的类型符合CollectionType。通过Swift2.0中引入的协议(protocol)扩展,现在可以只实现所需实例方法的一个子集,同时自动实现所有其他方法。但是我需要提供的最小方法子集是什么? 最佳答案 似乎最低要求是实现Indexable协议(protocol)。这是一个例子,没有一个可以省略属性/方法而不会导致编译器错误:structMyCollectionType:CollectionType{varstartIndex:Int{return0}varendIndex:Int{return3}subsc

swift - 如何实现返回协变 Selfs 的协议(protocol)方法?

错误:非最终类(“Class”)无法满足协议(protocol)“Protocol”要求“instance”,因为它在非参数、非结果类型位置使用“Self”protocolProtocol{varinstance:Self{get}}classClass:Protocol{varinstance:Class{returnSubclass()}}classSubclass:Class{}以下是我在C#中表达我想要的内容的方式。(据我所知,C#没有办法强制通用参数“Self”实际上是我们从Swift中知道的Self,但它作为文档足以让我做正确的事情。)interfaceProtocolwh

Swift 协议(protocol)函数 : returning the same type of conforming class

我想知道是否可以在Swift中完成类似java(或c++)的事情:我有一个协议(protocol):protocolProt1{funcreturnMyself()->Prot1}并且一个类符合协议(protocol)Prot1。我可以强制函数returnMyself()的返回类型与下面的类的类型相同吗?classMyClass:Prot1{publicfuncreturnMyself()->MyClass{returnself}}这可能吗? 最佳答案 只需在协议(protocol)中使用SelfprotocolProt1{func

ios - 如何在 Swift 中使用协议(protocol)公开 Objective-C 对象的私有(private)类方法?

考虑UIColor上的两个私有(private)方法:返回颜色RGB字符串的实例方法styleString返回破坏性按钮使用的红色的类方法_systemDestructiveTintColor。UIColor.hprivateheaderforreference对于实例方法,我可以创建一个@objc协议(protocol)并使用unsafeBitCast公开私有(private)方法:@objcprotocolUIColorPrivate{funcstyleString()->UIColor}letwhite=UIColor.whiteColor()letwhitePrivate=un

swift - 可编码 : does not conform to protocol 'Decodable'

无法理解为什么我的类不符合Codable请注意,在我的例子中,我不需要实现方法encode和decode。publicclassLCLAdvantagePlusJackpotCache:Codable{publiclettoken:Stringpublicletamount:NSNumberpublicletmember:Boolpublicinit(token:String,amount:NSNumber,member:Bool){self.token=tokenself.amount=amountself.member=member}enumCodingKeys:String,Co