草庐IT

SMB1Protocol

全部标签

ios - 访问协议(protocol)类型的成员在 Swift 中不起作用

以下是问题,如果类型是protocol.type,我无法调用类方法。是否有替代模式可以实现这一目标。真实场景是我有arr:[SomeProtocol.Type]并且我想执行让字符串:[String]=arr.map{$0.str}protocolSomeProtocol:class{staticvarstr:String{get}staticfuncvalue()->Int}classSomeClass:SomeProtocol{staticvarstr:String="SomeClass"staticfuncvalue()->Int{return1}}letprotocolType:

objective-c - Swift 2 - @objc 抛出错误的协议(protocol)

我在Swift项目中使用Typhoon,该项目需要用@objc标记协议(protocol)。我正在尝试将我的项目升级到Swift2。在我的iOS应用程序中,我的服务层将错误抛回给UI。然而,尽管我尽了最大的努力,我还是得到了一个编译错误:Type'ErrorThrower'doesnotconformtoprotocol'Throwable'@objcprotocolThrowable{funcdoSomething(someParam:AnyObject)throws}@objcclassErrorThrower:NSObject,Throwable{funcdoSomething(

ios - 如何在 Swift 中对两种类型进行协议(protocol)扩展约束

我有一个协议(protocol)及其相应的扩展,看起来像这样:importFoundationprotocolHelpActionManageable{typealiasItemType:UIViewController,HelpViewControllerDelegatevarviewController:ItemType{get}}extensionHelpActionManageable{funcpresentHelpViewController(){lethelpViewController=HelpViewController(nibName:HelpViewControll

swift - 使用带有类型别名的协议(protocol)作为属性

我有一个带有类型别名的协议(protocol):protocolArchivable{typealiasDataTypefuncsave(data:DataType,withNewNamenewName:String)throwsfuncload(fromFileNamefileName:String)throws->DataType}和一个符合该协议(protocol)的类:classArchiver:Archivable{typealiasDataType=Intfuncsave(data:DataType,withNewNamenewName:String)throws{//sa

Swift 协议(protocol)要求属性作为协议(protocol)

我正在尝试定义一个协议(protocol)“Repository”,它需要定义几个属性(实现特定协议(protocol)“DataSource”)但由于我的真实场景的复杂性,这些属性之一需要是“DataSource”的子协议(protocol)。我将问题简化为这个简单的代码:protocolDataSource{}protocolExtraDataSouce:DataSource{funcmethod1()->String}structMyDataSource:ExtraDataSouce{funcmethod1()->String{return"whatever"}}protocol

Swift 序列协议(protocol)的 Swift 2 到 3 迁移

我正在尝试将此库(https://github.com/dankogai/swift-json)中的以下代码转换为Swift3兼容代码。我很难弄清楚如何将Swift2中使用的Sequence协议(protocol)转换为适用于Swift3的正确版本。与3相比,我找不到任何关于Swift2Sequence协议(protocol)更改的文档。这里是我目前尽可能转换为Swift3的代码extensionJSON:Sequence{publicfuncgenerate()->AnyIterator{switch_value{caseletoasNSArray:vari=-1returnAnyI

ios - 协议(protocol)继承问题

我尝试设置各种协同工作的协议(protocol)。不幸的是,我无法让它们按照我想要的方式工作。看看下面的代码,我想我的目标很明显:我想要一个符合协议(protocol)X的类。如果它符合协议(protocol)Y而不是协议(protocol)Y继承自协议(protocol)X,那么它也应该被接受为一个符合协议(protocol)的类.相反,我收到以下编译错误无法为协议(protocol)“ViewModelType”推断关联类型“VC”推断类型“ExampleViewControllerType”(通过匹配要求“viewController”)无效:不符合“ViewType”当前设置:

swift - 如何调用可选的协议(protocol)方法?

我有一个类符合我自己的协议(protocol),它有可选的方法。对该类对象的引用也是可选的。换句话说,对象可能存在并且它可能已经实现了相关方法。但是我怎么调用它呢?我有这样的代码:iflettheDelegate=delegate{ifletresult=theDelegate.delegateMethod(){}}但是Xcode提示说“可选类型的值'(()->())?'没有打开”。它要我将示例中第2行的后半部分更改为“theDelegate.delegateMethod!()”,但强制展开会破坏我想要做的事情的目的。我应该如何调用此方法?请注意,我的方法没有参数或返回值。

swift - 具有非可选属性的类符合具有可选属性的协议(protocol)

如果我有一个具有可选属性的协议(protocol),以及一个需要符合该协议(protocol)的类,该类已经具有相同的属性,但作为非可选属性,我如何使该类符合协议(protocol)。protocolMyProtocol{vara:String?{getset}}classMyClass{vara:String}extensionMyClass:MyProtocol{//WhatdoIputheretomaketheclassconform} 最佳答案 不幸的是,您不能在MyClass中用不同的类型重新声明同一个变量。Dennis的

具有关联类型的 Swift 协议(protocol) - 类型可能不会引用自身作为要求

我有以下协议(protocol)及其扩展publicprotocolRESEndpointReachable:CustomDebugStringConvertible{associatedtypeEndpointType:RESEndpointReachable//MARK:-Properties///ThenameoftheendpointasdefinedintheRESTURI.varname:String{get}///Anarrayofpossiblenextendpointsthatthisendpointcanreach.E.gaccount'snextendpoints