草庐IT

SMB1Protocol

全部标签

swift - 为什么我们不能将协议(protocol) `Encodable` 用作函数中的类型?

我正在尝试通过符合Encodable协议(protocol)的编码模型获取数据。但是它无法像下面的代码那样调用funcencode://MARK:-Demo2classTestClass2:NSObject,Encodable{varx=1vary=2}vardataSource2:Encodable?dataSource2=TestClass2()//error:`Cannotinvoke'encode'withanargumentlistoftype'(Encodable)'`let_=tryJSONEncoder().encode(dataSource2!)//funcencod

design-patterns - 协议(protocol):为什么一致性检查和可选要求需要@ObjC?

Swiftdocumentation以下是关于协议(protocol)的内容:Youcancheckforprotocolconformanceonlyifyourprotocolismarkedwiththe@objcattribute,asseenfortheHasAreaprotocolabove.ThisattributeindicatesthattheprotocolshouldbeexposedtoObjective-CcodeandisdescribedinUsingSwiftwithCocoaandObjective-C.Evenifyouarenotinteroper

ios - 快速、objective-c 协议(protocol)实现

还在努力适应swift,但是由于我的obj-c知识接近于0,一直没能实现这个SocketRocket协议(protocol)。任何帮助将不胜感激这是我尝试实现的obj-c委托(delegate)@protocolSRWebSocketDelegate//messagewilleitherbeanNSStringiftheserverisusingtext//orNSDataiftheserverisusingbinary.-(void)webSocket:(SRWebSocket*)webSocketdidReceiveMessage:(id)message;@optional-(vo

swift - 类方法协议(protocol)

我想在一个协议(protocol)中声明一个classfunc,我打算从A类、B类和C类中遵守这个协议(protocol)。B和C继承自A。本质上,我想在B和C中覆盖这个函数,同时仍然在A中提供一个实现。所以,我必须声明我的协议(protocol)如下:protocolMyManagedObjectCoolStuff{staticfuncentityName()->String}然后我在A中有这个:classA:NSManagedObject{}classB:A{}classC:A{}extensionA:MyManagedObjectCoolStuff{staticfuncentit

swift - 声明作为子类并符合 Swift 4 协议(protocol)的元类型

ThisisNOTaduplicateofInSwift,howcanIdeclareavariableofaspecifictypethatconformstooneormoreprotocols?.ThisquestionisaboutaspecificusecasewhereIneededametatypeanditwasdefinitelynotobvioushowtodoit.Swift4允许声明一个变量,它是一个子类并且符合多个协议(protocol):varmyVariable:MyClass&MyProtocol&MySecondProtocol我需要这样的一致性,但不

ios - Swift:XCTest 委托(delegate)/协议(protocol)回调(单元测试)

我需要为委托(delegate)/协议(protocol)回调创建一些单元测试。这是我正在尝试测试的实现示例:protocolSomethingWithNumbersDelegate:class{funcsomethingWithDelegate(results:Int)}classSomethingWithNumbers{vardelegate:SomethingWithNumbersDelegate?=nilfuncdoAsyncStuffWithNumbers(number:Int){varnumbers=Int()/*doingsomewiththeinput*/self.de

ios - 如何要求泛型类型使用协议(protocol)中的特定类型实现泛型协议(protocol)

您好,我在当前项目中大量使用泛型。但是,我遇到了一个问题:我需要一个通用函数foo能够采用符合使用特定类型的通用协议(protocol)的参数。例如在Java中我可以这样做:publicinterfaceProto{publicvoidSomeFunction()}publicclassSampleClass{}publicclassConformsextendsProto{@OverridepublicvoidSomeFunction(){}}publicclassTestingClass{publicvoidRequires(Protoparam){//Icanuseparam}}

swift - 类型 'OSType' 不符合 Swift 2.0 中的协议(protocol) 'AnyObject'

我刚刚使用Swift2.0更新到Xcode7beta。当我将我的项目更新到Swift2.0时,我收到了这个错误:“Type'OSType'doesnotconformtoprotocol'AnyObject'inSwift2.0”。我的项目在Swift1.2中完美运行。这是代码出错的地方:videoDataOutput=AVCaptureVideoDataOutput()//createaqueuetorunthecaptureonvarcaptureQueue=dispatch_queue_create("catpureQueue",nil);videoDataOutput?.set

ios - 不符合协议(protocol) 'NSCoding' - Swift 3

我见过几个和我类似的问题;但是,这些与swift2/1有关,而我目前使用的是swift3。我相信Apple对其进行了轻微更改。classPerson:NSObject,NSCoding{varsignature:UIImageinit(signature:UIImage){self.signature=signature}requiredconvenienceinit(coderaDecoder:NSCoder){letsignature=aDecoder.decodeObject(forKey:"signature")as!UIImageself.init(signature:sig

swift - 类型 'Error' 不符合协议(protocol) 'RawRepresentable'

将我的Playground代码更改为Swift3,Xcode建议更改enumError:ErrorType{caseNotFound}到enumError:Error{caseNotFound}但现在我得到标题错误,我不知道如何让枚举符合该协议(protocol)。 最佳答案 问题是你将错误类型命名为Error——这与标准库Error协议(protocol)冲突(因此Swift认为你有一个循环引用).您可以将SwiftError协议(protocol)称为Swift.Error以消除歧义:enumError:Swift.Error{