草庐IT

protocol-handler

全部标签

ios - Swift 类的 Objective-c 协议(protocol)。无法识别的方法

我正在尝试将一些代码从Objective-c迁移到Swift,但是当我想要使Swift类符合Objective-c协议(protocol)并从objetive-c类访问此类时,我在开始时遇到了问题。我做错了什么,但我没有看到。用于测试的Objective-c协议(protocol)和obj-c类(test_class.h)#import@protocoltest_delegate-(void)returnData:(NSString*)dataInMethod:(NSString*)method;@end@interfacetest_class:NSObject@property(we

swift - 定义必须是子类并且符合协议(protocol)的属性

在Swift2.0中,我如何做相当于@property(nonatomic,strong)NSManagedObject*model的操作??基本上,我试图在我的类上定义一个属性,该属性必须都是NSManagedObject的子类并符合SomeProtocol(我将调用两者定义的方法)。我看到了这个:https://stackoverflow.com/a/25826948/363789,但我不确定如何将此语法应用于属性定义... 最佳答案 swift4现在可以在Swift4中使用以下语法:varmyObject:NSManagedO

swift - 在协议(protocol)定义中包含功能与仅在扩展中定义它的原因?

采用以下协议(protocol)和扩展:protocolProtocolA{funcmyFunc()}extensionProtocolA{funcmyFunc(){print("DefaultProtocolAimplementation.")}}这和将函数完全排除在协议(protocol)定义之外有什么区别(如果有的话),如下所示:protocolProtocolB{}extensionProtocolB{funcmyFunc(){print("DefaultProtocolBimplementation.")}}我发现了一个不同之处。如果我定义一个覆盖默认实现的结构,我只能将它转

ios - 类型 'String' 不符合协议(protocol) 'NSCopying' 向下转换 AnyObject 到 String 时出错

我正在尝试像这样解析JSON格式:{"key_1":{"key_2":"value"}}然后将“值”赋给一个变量。这是我的代码:varvariableShouldBeAssigned:Stringifletx=(jsonResult["key_1"]?as?NSDictionary){iflety=(x["key_2"]?as?String){variableShouldBeAssigned=y}}但是,当我尝试从x["key_2"]?向下转换为字符串时发生错误,但是从jsonResult["key_1"]?向下转换没问题。code>到NSDictionary。我可以通过使用x["ke

ios - Swift 覆盖子类中的协议(protocol)方法

我有一个基类实现了一个符合如下协议(protocol)的扩展:protocolOptionsDelegate{funchandleSortAndFilter(opt:Options)}extensionBaseViewController:OptionsDelegate{funchandleSortAndFilter(opt:Options){print("Baseclassimplementation")}}我有一个继承自BaseViewController的子类“InspirationsViewController”。我正在重写扩展中的协议(protocol)方法,如下所示:ext

ios - Swift:类型必须实现协议(protocol)并且是给定类的子类

这个问题在这里已经有了答案:Swift:Propertyconformingtoaspecificclassandinthesametimetomultipleprotocols(3个答案)关闭8年前。在Objective-C中,您可以将类型定义为属于给定类并实现协议(protocol):-(UIView*)someMethod;这表明someMethod返回的值是一个实现给定协议(protocol)Protocol的UIView。有没有办法在Swift中执行类似的操作?

generics - Swift:检查泛型类型是否符合协议(protocol)

我有一个这样定义的协议(protocol):protocolMyProtocol{...}我还有一个通用结构:structMyStruct{...}最后我有了一个通用函数:funcmyFunc(s:MyStruct)->T?{...}如果类型T符合MyProtocol,我想在函数内部进行测试。本质上我希望能够做到(〜伪代码):letconforms=T.selfisMyProtocol但这会引发编译错误:error:cannotdowncastfrom'T.Type'tonon-@objcprotocoltype'MyProtocol'letconforms=T.selfisMyPro

swift - 为什么关键字 "weak"只能应用于class和class-bound协议(protocol)类型

当我在Swift中将变量声明为weak时,我有时会从Xcode收到错误消息:'weak'mayonlybeappliedtoclassandclass-boundprotocoltypes或'weak'mustnotbeappliedtonon-class-bound'SomeProtocol';consideraddingaprotocolconformancethathasaclassbound我想知道为什么关键字weak只能应用于类和类绑定(bind)协议(protocol)类型?这个要求背后的原因是什么? 最佳答案 此错误的

ios - Protocol 只能作为泛型约束,因为它有 Self 或 associatedType 要求

我有一个协议(protocol)RequestType,它有如下所示的associatedType模型。publicprotocolRequestType:class{associatedtypeModelvarpath:String{getset}}publicextensionRequestType{publicfuncexecuteRequest(completionHandler:Result->Void){request.response(rootKeyPath:rootKeyPath){[weakself](response:Response)->Voidincomplet

swift - 返回 self 的协议(protocol)功能

我有一个返回对象副本的协议(protocol)P:protocolP{funccopy()->Self}和一个实现P的类C:classC:P{funccopy()->Self{returnC()}}但是,无论我是否将返回值作为Self,我都会得到以下错误:Cannotconvertreturnexpressionoftype'C'toreturntype'Self'我也试过返回C。classC:P{funccopy()->C{returnC()}}这导致了以下错误:Method'copy()'innon-finalclass'C'mustreturnSelftoconformtopro