草庐IT

SMB1Protocol

全部标签

swift - 在 Swift 2 中声明符合协议(protocol)的 UIView 类型的变量

我需要声明一个UIView类型的变量,它也符合MyProtocol:protocolMyProtocol:class{funcfoobar()}classMyClass{varmyView:UIView!//Error:Cannotspecializenon-generictype'UIView'}但是我收到编译器错误:无法专门化非泛型类型“UIView”。我需要从UIView和MyProtocol访问变量的方法。支持这些要求的正确变量声明是什么?如果有任何不同,只有UIView子类会实现该协议(protocol)。目前我通过扩展添加协议(protocol)一致性。我找到了这个答案:h

ios - .h 中没有名为 'ReformerProtocol' 的类型或协议(protocol),但 .m 工作正常

我有一个swift协议(protocol):importFoundation@objcprotocolReformerProtocol{funcreformDataWithManager(apiManager:FSAPIClient)->NSDictionary}在我的ObjectiveC.m中,如果我定义如下方法:-(NSDictionary*)fetchDataWithReformer:(id)reformer{}它工作正常,但如果我在.h文件中声明此方法:-(NSDictionary*)fetchDataWithReformer:(id)reformer;错误是:Notypeor

ios - 类型 'String' 不符合协议(protocol) 'SequenceType' - Swift 2.0

我试图在Swift2.0中反转字符串,但在字符串ifself上出现错误。funcreverseString(string:String)->String{varbuffer=""forcharacterinstring{buffer.insert(character,atIndex:buffer.startIndex)}returnbuffer}错误:Type'String'doesnotconformtoprotocol'SequenceType' 最佳答案 简单的解决方案:funcreverseString(string:Str

ios - 如何声明具有符合协议(protocol)的具体返回类型的函数?

编辑:这个问题是在swift添加some关键字之前写的,使其过时在objective-c中我可以声明一个带有返回类型的方法:-(UIView*)someMethod;在此示例中,该方法返回一个符合协议(protocol)MyProtocol的UIView。我想在swift中做类似的事情:protocolMyProtocol{varsomeProperty:Int{getset}}protocolMyDelegate{funcsomeMethod()->UIView:MyProtocol//theviewshouldconformtotheprotocol-Idon'tcarewhatk

enums - 当协议(protocol)包含 Swift 中的枚举时检查协议(protocol)一致性?

在Swift中,为了检查协议(protocol)是否符合is或as?向下转型,您必须使用@objc属性标记协议(protocol)。一旦你用那个属性标记了一个协议(protocol),你似乎就不能有一个以枚举作为属性的协议(protocol),因为枚举不能在Objective-C中表示。enumLanguage:String{caseEnglish="English"caseSpanish="Spanish"caseGerman="German"}@objcprotocolHumanizable{varlanguage:Language{getset}}你会得到一个错误:error:p

swift - 测试协议(protocol)与关联类型的一致性

我有一个使用关联类型的协议(protocol),例如:protocolPopulatable{typealiasTfuncpopulateWith(object:T)}和实现协议(protocol)的类:classDateRowType:Populatable{funcpopulateWith(object:NSDate){print(object.description)}}classStringRowType:Populatable{funcpopulateWith(object:String){print(object)}}但是当我尝试转换或测试一致性时,像这样:letdrt=D

swift 2.0 : Protocol extensions: Two protocols with the same function signature compile error

给定这两个协议(protocol)及其扩展:protocolFirstDelegate{funcsomeFunc()}protocolSecondDelegate{funcsomeFunc()}extensionFirstDelegate{funcsomeFunc(){print("Firstdelegate")}}extensionSecondDelegate{funcsomeFunc(){print("Seconddelegate")}}并试图同时符合它们:classSomeClass:FirstDelegate,SecondDelegate{}我收到编译时错误:Type'Some

Swift - 协议(protocol)中带有 where 子句的关联类型?

考虑以下几点:protocolSomeProtocol{typealiasF:FootypealiasFB:FooBarwhereFB.Foo==F}但这不会编译,因为我们不能像那样将where子句放在typealias中。我一定在这里遗漏了一些东西,因为这可以通过typeparameterization轻松完成,如下所示:structSomeStruct{}什么是where子句等同于关联类型? 最佳答案 Swift(2.1)当前不支持协议(protocol)中关联类型的类型参数化。尽管在这种情况下您甚至不需要where子句来实现功

Swift 关联类型和协议(protocol)继承

我使用的是Swift2.2,我声明了一个具有关联类型的协议(protocol),如下所示:protocolCollectionViewModeling{associatedtypeCellTypefunccellAtIndexPath(indexPath:NSIndexPath)->CellType}现在我有一个符合上述协议(protocol)的View模型协议(protocol):enumMyItemCell{caseMyItemCell1,MyItemCell2}protocolItemsListViewModeling:CollectionViewModeling{associa

swift - 以协议(protocol)和符合类(!)实例作为参数的函数

我正在尝试弄清楚如何定义一个采用以下内容的函数两个参数:协议(protocol)。符合该协议(protocol)的类(引用类型)的实例。例如给定protocolP{}classC:P{}//Class,conformingtoPclassD{}//Class,notconformingtoPstructE:P{}//Struct,conformingtoP这应该编译:register(proto:P.self,obj:C())//(1)但这些不应该编译:register(proto:P.self,obj:D())//(2)DdoesnotconformtoPregister(proto