草庐IT

UIApplicationDelegate_Protocol

全部标签

swift - 协议(protocol)扩展初始化程序强制调用 self.init

我刚刚阅读了有关协议(protocol)初始化程序要求的AppleSwift4文档,并在协议(protocol)扩展中提供了默认实现。importUIKitprotocolProtocol{init()}extensionProtocol{init(){print("SDf")self.init()//Line1//Compilererroroccuredifthisisomitted//"'self.init'isn'tcalledonallpathsbeforereturningfrominitializer"}}structStructure:Protocol{init(stri

ios - 为一个或另一个扩展具有多个约束的协议(protocol) - Swift

我想使用满足OR(||)约束的默认实现来扩展协议(protocol)。classA{}classB{}protocolSomeProtocol{}///Itwillthrowerrorfor||extensionSomeProtocolwhereSelf:A||Self:B{} 最佳答案 你不能用OR扩展协议(protocol),因为你不能在iflet中这样做,因为编译器会推断出self或var的类型,所以如果它符合2种类型,编译器就不会不知道自己是什么类型。(当您键入self.或任何var时,编译器总是知道编译器类型中的var类型

swift - 如何使结构符合具有属性的协议(protocol)符合 swift 4 中的另一个协议(protocol)?

我打算将Web服务中的一些JSON数据反射(reflect)到swift结构中。所以我创建了一个符合可解码协议(protocol)的协议(protocol),并计划创建一些结构来符合它。这是我创建的协议(protocol):protocolXFNovelApiResponse:Decodable{vardata:Decodable{get}varerror:NovelApiError{get}}structNovelApiError:Decodable{letmsg:StringleterrorCode:String}已编译。但是当我开始编写我的结构时,我遇到了一个错误。该结构的代码在

ios - Swift:符合带有 "where"子句的通用方法协议(protocol)

总结:我想创建一个Class这将有一个相应的ClassDelegate与func的协议(protocol)目标:将单个对象和行为与多个对象类一起重用。接收已经具有专门化类的委托(delegate)回调,无需将对象强制转换为特定类即可使用它。示例代码:具有泛型方法的协议(protocol):protocolGenericTableControllerDelegate:AnyObject{funccontroller(controller:GenericTableController,didSelectvalue:T)}通用基础UITableViewController子类:opencla

swift - 类不符合协议(protocol),但结构符合

结构和类都符合协议(protocol)。我使用带有where条件的2个协议(protocol)扩展来为类和结构添加var属性的实现。我很惊讶地看到只有类的编译错误。为什么这发生在类而不是结构上?protocolMyProtocol{varproperty:String{get}}extensionMyProtocolwhereSelf==MyStruct{varproperty:String{return""}}extensionMyProtocolwhereSelf==MyClass{varproperty:String{return""}}structMyStruct:MyProt

function - Swift、数学函数和协议(protocol)

我正在尝试创建2个协议(protocol)ArithmeticType和MathematicType,它们将在通用运算符函数的where子句中使用protocolArithmeticType{func+(lhs:Self,rhs:Self)->Selffunc-(lhs:Self,rhs:Self)->Selffunc*(lhs:Self,rhs:Self)->Selffunc/(lhs:Self,rhs:Self)->Self}extensionInt:ArithmeticType{}extensionDouble:ArithmeticType{}extensionFloat:Ari

swift - 收到此错误 PageViewController 不符合协议(protocol) 'UIPageViewControllerDataSource'

我无法修复此错误或找出此错误的原因,错误显示在下面的屏幕截图中。只是尝试创建pageViewController的演示,但我无法添加dataSource类,而且self.dataSource=self。提前致谢。 最佳答案 仅仅为自定义类添加协议(protocol)定义是不够的。您必须至少提供UIPageViewControllerDataSource协议(protocol)的两个必需函数:funcpageViewController(pageViewController:UIPageViewController,viewContr

ios - 子类化与协议(protocol)

让我们从Class方法开始:classLoginCredentials{varid:Stringinit(userID:String){self.id=userID}}然后我们将有以下内容:classFacebookLoginCredentials:LoginCredentials{vartoken:Stringinit(userID:String,userToken:String){self.token=userTokensuper.init(userID:userID)}}和classTwitterLoginCredentials:LoginCredentials{vartoken

swift - 带有 Swift 协议(protocol)的通用类

我有一个像这样的基本协议(protocol):publicprotocolBasicSwiftClassLayout{varnibName:String{get}}我的课是这样的:publicclassBasicSwiftClass{}我定义了2个不同的结构,这样我就可以用2个不同的nib启动这个类:publicstructNormalLayout:BasicSwiftClassLayout{publicletnibName="NormalLayoutNibName"}和publicstructOtherLayout:BasicSwiftClassLayout{publicletnib

swift - 使用默认参数值声明协议(protocol)函数

我希望这个函数在协议(protocol)中:funcslideToRight(currentViewControllerviewController:UIViewController,completion:((Bool)->())?=nil){//dosomestuff}但是当我写这样的协议(protocol)时:protocolSomeDelegate{funcslideToRight(currentViewControllerviewController:UIViewController,completion:((Bool)->())?=nil)}我遇到了一个错误:Defaulta