草庐IT

UIApplicationDelegate_Protocol

全部标签

swift - Swift 中协议(protocol)的类型约束问题

我有一个协议(protocol)AProtocol,它有一些数据结构和一个协议(protocol)BProtocol,它有一个采取参数符合AProtocol的操作。代码是这样的:protocolAProtocol{//data}protocolBProtocol{funcaction(completionHandle:(Bool,[T]?)->())}当我实现这些协议(protocol)时-一个结构符合AProtocol,一个类符合BProtocol,我找不到满足编译器要求的方法。structAStruct:AProtocol{}classBClass:BProtocol{varstr

swift - 如何创建返回通用协议(protocol)类型的函数?

在下面的代码中,我有一个通用协议(protocol)Var,它有一个私有(private)实现类LambdaVar。现在我想要一个返回LambdaVar实例而不公开它的函数。但我找不到一种方法来定义返回通用协议(protocol)类型的函数。publicprotocolVar{typealiasValueTypevarvalue:ValueType{get}}structLambdaVar:Var{let_get:Void->Tinit(_f:Void->T){_get=f}varvalue:T{get{return_get()}}}publicfunctransform(v:T,f:

swift - Swift 中的协议(protocol)向下转换

我有以下情况,我有一个通用协议(protocol)A,它可以有从它继承的变体(例如B)和一个实现变体的类(C)。protocolA{}protocolB:A{varfoo:String{get}}classC:B{letfoo:String="foo"}现在,如果我有一个A类型的对象,但实际上是一个C,我怎样才能得到B中声明的内容?funcfoo(){letc:A=C()}如果我尝试按letb=casB进行转换,我会得到Cannotdowncastfrom'A'tonon-@objcprotocoltype'B'。 最佳答案 您的代

ios - NSCoding 协议(protocol)的变化

我刚刚回到8月份开始的iO的Swift应用程序开发。似乎发生了很多变化。现在我的NSCoding协议(protocol)不再有效,我找不到问题所在。实际上我知道,但我不知道如何用新协议(protocol)实现我的旧代码。这是我的旧init(coder:NSCoder):requiredinit(coder:NSCoder!){if(coder!=nil){//Variablesinitialization}else{//Defaultsvalues}super.init()}实际上,我不能再使用NSCoder!所以我无法检查是否有编码器,所以我是否必须设置默认值。问题是:当coder为

swift - 进一步约束来自 Swift 协议(protocol)的泛型函数

我有一个这样定义的Swift协议(protocol):protocolMyProtocol{funcgenericMethod(param:T)->()}我可以像这样在基类中实现泛型方法:classMyBaseClass:MyProtocol{funcgenericMethod(param:T)->(){println("Performinggenericmethodfortype\(T.self)")}}classMySubClass:MyBaseClass{...}到目前为止,还不错。我可以实现这个方法,它可以正常编译和运行。现在,我想做一些类似的事情,但在我的基类中,我想通过要求

swift - 使用 Swift 在子协议(protocol)中指定关联的父协议(protocol)类型

在Swift2中,我有一个协议(protocol):protocolProtocol{typealiasType}当我想使用Protocol而不定义要用于Type的类型时:varprotocol1:Protocol然后我收到以下错误:Protocol'Protocol'canonlybeusedasagenericconstraintbecauseithasSelforassociatedtyperequirements很明显为什么这行不通。我有另一个协议(protocol),它继承自第一个协议(protocol)并指定关联类型Type应该是一个String。protocolAnoth

ios - 对符合 Swift 协议(protocol)的对象和变量进行单元测试

我有一个VIPER架构设置,正在尝试对线框的实例化进行单元测试。对于任何不知道VIPER是什么的人来说,要理解的关键部分是有4个类具有关键职责。线框创建其他3个(View、演示者和交互器)。然后线框将它们适本地连接起来,如下所示:Wireframe^|vViewPresenterInteractor所以我在Swift中创建单元测试,并且很难确保这些连接已设置。请注意,代码本身有效,单元测试中的断言是问题所在。functestInitWithNothingShouldInstantiateVIPERStackAndConnectLayers(){wireframe=LoginWirefr

swift - 实现可散列和重载运算符的协议(protocol)

我有以下结构:protocolMidiPlayable:Hashable{varmidiValue:UInt8{get}}structPercussionSound:MidiPlayable{letname:Stringlettype:PercussionType}structNote:Hashable,MidiPlayable{letpitch:Pitchletoctave:UInt8letmidiValue:UInt8}我想将这些类型作为Midiplayable传递到我的播放设备,因为我只需要知道原始值。此外,它们将被放置在集合中,因此Hashable是必要的,而且我想比较它们,所

swift - Typealias 必须声明为公共(public)的,因为它符合公共(public)协议(protocol)中的要求

我正在实现一个基本的Functor//classFunctorfwherepublicprotocolFunctor{typealiasAtypealiasBtypealiasFB//fmap::(a->b)->fa->fbfuncfmap(f:A->B)->FB}publicstructBox{letvalue:Xpublicinit(valuev:X){value=v}}extensionBox:Functor{publictypealiasA=XpublictypealiasB=AnypublictypealiasFB=Boxpublicfuncfmap(f:A->B)->FB{

swift - Setter 在使用协议(protocol)转换访问计算变量期间调用结构

我为遵守协议(protocol)的结构创建了一个全局变量。变量有一个setter观察器,它在设置变量时完成任务。由于结构本身遵守协议(protocol),因此我希望变量的类型是协议(protocol)类型。protocolTestProtocol{varsomeInt:Int{getset}varcomputedVar:Int{get}funcfuncCall()->Int}structTestStruct:TestProtocol{varsomeInt:Int=1varcomputedVar:Int{return0}funcfuncCall()->Int{return2}}varte