草庐IT

SMB1Protocol

全部标签

swift - 如何在 swift 中使协议(protocol)方法可选?

如何在swift中使协议(protocol)方法成为可选的?现在似乎需要协议(protocol)中的所有方法。还有其他解决方法吗? 最佳答案 虽然您可以在Swift2中使用@objc,但您可以添加一个默认实现,而不必自己提供该方法:protocolCreatable{funccreate()}extensionCreatable{//bydefaultamethodthatdoesnothingfunccreate(){}}structCreator:Creatable{}//yougetthemethodbydefaultCrea

swift - 使用协议(protocol)扩展的默认关联类型

我有一个带有associatedType的协议(protocol)。我想在协议(protocol)扩展中为该类型提供默认的typealias。这仅适用于从特定类继承的类。protocolFoo:class{associatedtypeBarfuncfooFunction(bar:Bar)}协议(protocol)扩展:extensionFoowhereSelf:SomeClass{typealiasBar=IntfuncfooFunction(bar:Int){//Implementation}}编译器提示“Bar”在此上下文中对于类型查找不明确。我也无法在swiftbook中找到任何

ios - SwiftUI 列表数据的可识别协议(protocol)扩展

我正在试验SwiftUI,在为我的一个列表实现数据模型时遇到了一个问题。我的计划是创建一个协议(protocol)CardProtocol作为我列表元素的数据协议(protocol),然后有一个CoreData协议(protocol)实现以及一个用于单元测试和Canvas使用的虚拟协议(protocol)。如果您在SwiftUIList中使用数据集合,则单个元素需要符合Identifiable协议(protocol)。代码如下所示:importSwiftUIimportCombinefinalclassCardsModel:BindableObject{varcards:[CardPr

swift - 协议(protocol)间接实现另一个协议(protocol)不止一次

我正在做一些测试项目来学习Swift,但有一个编译问题我无法解决。我定义了这样一个协议(protocol):@objcprotocolMyDataProvider:UICollectionViewDataSource,UICollectionViewDelegate,NSObjectProtocol{varmyData:AnyObject{get}}和一个实现它的类:classMyData:NSObject,MyDataProvider{varmyData:AnyObjectinit(){self.myData=Int()}funccollectionView(collectionVi

swift - 在 Swift 中声明符合协议(protocol)的类

在objective-C中我们可以声明一个符合某些协议(protocol)的类@property(nonatomic,strong)ClassobjectRestorationClass;并且可以给它赋值作为someObject.objectRestorationClass=[SomeClassclass];问题是:我怎样才能在swift做到这一点?我尝试使用varobjectRestorationClass:UIObjectRestoration!和someObject.objectRestorationClass=SomeClass.self但它给了我错误'SomeClass.Ty

swift - 无法将数组成员向下转换为协议(protocol)类型

我有两个协议(protocol)Valid和Resetable以及一个类型为[Valid]的inputViews数组.一切正常。所以现在我有了我的Resetable协议(protocol):protocolResetable:class{funcreset()}现在,inputViews中的所有内容也都符合Resetable协议(protocol),所以我想做的基本上是遍历并调用reset()。如果我这样做,它将起作用:forinputininputViews{(inputas!Resetable).reset()}但是我扩展了Array如下:extensionArraywhereEl

Swift - 段错误,符合协议(protocol)

我有课classPresenter>:NSObject{overrideinit(){super.init()Layer.sharedInstance.service.addListener(self)}}我想让Presenter再符合一个Protocol并写一个扩展:extensionPresenter:OneMoreProtocol{funcdoSomething(){self.update()}}但这会出错:在为源文件发出IR时..../Presenter.swift(段错误)协议(protocol)看起来:@objcprotocolOneMoreProtocol:AnyObje

ios - 协议(protocol)扩展和子类

我想知道为什么下面的内容没有打印出我认为应该打印的内容。/*Fails*/protocolTheProtocol{funcupdate()}classA:TheProtocol{}classB:A{}extensionTheProtocol{funcupdate(){print("CalledupdatefromTheProtocol")}}extensionTheProtocolwhereSelf:B{funcupdate(){print("CalledupdatefromB")}}letinstanceB=B()instanceB.update()letinstanceBViaPr

Swift 协议(protocol)继承和协议(protocol)一致性问题

protocolBasePresenterProtocol:class{}protocolDashboardPresenterProtocol:BasePresenterProtocol{}finalclassDashboardPresenter{weakvarview:DashboardPresenterProtocol?init(){self.view=DashboardViewController()}functest(){print("Hello")}}extensionDashboardPresenter:DashboardViewProtocol{}protocolBase

Swift 协议(protocol)错误 : 'weak' cannot be applied to non-class type

Protocols和class-boundProtocols有什么区别,我们应该在Swift中使用哪一个?protocolA:class{...}protocolA{...}当协议(protocol)未定义为:class时尝试添加weak委托(delegate)时出现错误:protocolA{...}weakvardelegate:A给出错误:'weak'cannotbeappliedtonon-classtype或'weak'mustnotbeappliedtonon-class-bound'A';consideraddingaprotocolconformancethathasac