草庐IT

不符合

全部标签

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

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

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

cocoa - 使 Swift 类符合需要 init 的协议(protocol)

我在Swift中有以下协议(protocol):protocolFooConvertible{typealiasFooTypeinit(foo:FooType)}我可以让Swift类在类定义中符合它:classBar:FooConvertible{varbaz:String=""requiredinit(foo:String){baz=foo}}到目前为止一切顺利。但是,当我尝试在扩展中使一个类符合它时,问题就出现了(对于Cocoa类,这是我唯一的选择,因为我没有源代码):classBaz{varbaz=""}extensionBaz:FooConvertible{requiredco

swift - 符合通用协议(protocol)的多个实例

我有一个带有关联类型的Swift协议(protocol)MessageHandler,一些不同的Message类型,还有一个类X:protocolMessageHandler{associatedtypeMessagefunchandle(message:Message)}classFooMessage{}classBarMessage{}classX{}现在如何让X能够同时处理FooMessages和BarMessages?试试这个:extensionX:MessageHandler{typealiasMessage=FooMessagefunchandle(message:FooM

ios - 扩展符合协议(protocol)的类与基于类似条件扩展协议(protocol)之间的区别?

我正在浏览thislink.但我并没有真正理解以下两个代码片段之间的逻辑区别:1。仅扩展那些符合协议(protocol)ErrorPopoverRenderer的UIViewControllers。protocolErrorPopoverRenderer{funcpresentError(message:String,withArrowshouldShowArrow:Bool,backgroundColor:UIColor,withSizesize:CGSize,canDismissByTappingAnywherecanDismiss:Bool)}extensionUIViewCon

swift - 如何列出对象符合的协议(protocol)?

使用Objective-C运行时,我可以获得对象符合的所有@objc协议(protocol)的列表:letobj=NSObject()varpc:UInt32=0letplist=class_copyProtocolList(object_getClass(obj),&pc)print("\(obj.dynamicType)conformsto\(pc)protocols")foriin0..或运行时加载的所有Objective-C协议(protocol):varallProtocolCount:UInt32=0letprotocols=objc_copyProtocolList(&a

ios - 类型 'AnyObject' 不符合协议(protocol) 'NSFetchRequestResult'

我刚刚安装了Xcode8beta2和iOS10beta.我有一个现有项目,我根据Xcode的提示从swift2.3更新到swift3。我的代码数据代码收到错误。这是在xcode从swift2.3到swift3的转换中自动生成的varfetchedResultsController:NSFetchedResultsController!我收到的错误是Type'AnyObject'doesnotconformtoprotocol'NSFetchRequestResult'我试图符合AnyObjectextensionAnyObject:NSFetchRequestResult{}但是我收到

ios - 符合通用协议(protocol)的结构类型,其关联类型也是协议(protocol)

这很难用语言表达,但我创建了一个最小的示例。这里有一个要点,如果您愿意...https://gist.github.com/anonymous/67d83fb2f286cf84539b58be96a971d3“数据项”协议(protocol)我有一个协议(protocol),它定义了具有属性number的Sortable对象。protocolSortable:Comparable{varnumber:Int{get}staticfuncBoolstaticfunc==(lhs:Self,rhs:Self)->Bool}structBasicSortable:Sortable{letnu

ios - 使 swift 类符合定义属性的 objective c 协议(protocol)

我无法使swift类符合objectivec协议(protocol)。在objectivec协议(protocol)中很容易实现方法,但我无法在以下协议(protocol)中实现属性。协议(protocol)是@protocolATLParticipant@property(nonatomic,readonly)NSString*firstName;@property(nonatomic,readonly)NSString*lastName;@property(nonatomic,readonly)NSString*fullName;@property(nonatomic,readon

swift - 我们可以在不强制转换的情况下快速测试符合相同协议(protocol)的对象是否相同吗?

我试图测试从工厂生成的两个对象是否相同,但编译器似乎不允许对仅符合相同协议(protocol)的对象进行身份检查。然而,将两个对象都转换为AnyObject似乎没问题。无论如何要避免看起来不必要的类型转换?这是一个简单的例子,它演示了我所看到的(在swift1.2中)protocolFooBar{}classFoo:FooBar{}classBar{letfoo1:FooBar?letfoo2:FooBar?init(){foo1=Foo()foo2=Foo()iffoo1!as?AnyObject===foo2!as?AnyObject{//thisisfine}iffoo1!===