jjzjj

Protocols

全部标签

swift - 协议(protocol)是否可以默认实现静态工厂方法?

考虑一个有工厂方法的协议(protocol):publicprotocolFrobnicator{funcfrobnicate()staticfuncmakeRightFrobnicator()->Frobnicator}privateclassSomeFrobnicatorImplementation:Frobnicator{...}privateclassAnotherFrobnicatorImplementation:Frobnicator{...}publicextensionFrobnicator{staticfuncmakeRightFrobnicator()->Frobn

ios - Swift - 具有实现通用协议(protocol)的值的 Typealias 字典

我想为实现Equatable协议(protocol)的对象/结构的String键和值的字典键入别名。所以我写了这行代码,但它给了我错误,我不知道如何继续修复。typealiasStorage=[String:Equatable]我想使用[String:E​​quatable]类型作为协议(protocol)中的变量,例如:protocolStorageModel{varstorage:Storage{getset}init(storage:Storage)}错误:Protocol'Equatable'canonlybeusedasagenericconstraintbecauseith

ios - Swift:具有同时符合类和多个协议(protocol)的元素的数组属性

在Objective-C中,有一种方法可以声明符合类和一组协议(protocol)的变量,如下所示:BaseClass*variable=...在Swift中,我想声明一个数组(实际上是一个类的属性),其中包含此模式定义的类型的元素。在thisquestion有一种解决方案可以通过使类通用并相应地约束类型来描述独立属性的类型。为了实例化这样一个类,有必要指定确切的类型。这对于独立属性来说不是问题,但在数组中应该可以存储具有不同确切类型的元素。有没有办法在Swift中表达它? 最佳答案 感谢@SebastianDressler和@Mi

ios - 如何根据实现该协议(protocol)的两个实例的身份为协议(protocol)实现 Equatable 协议(protocol)?

我正在尝试为基于左操作数和右操作数标识的协议(protocol)实现Equatable协议(protocol)。换句话说:我如何为一个协议(protocol)实现Equatable协议(protocol)以确定实现该协议(protocol)的两个实例(在我的例子中是iNetworkSubscriber)是否相同(相同的对象引用)。就像那样(错误消息包含在下面的代码中):protocoliNetworkSubscriber:Equatable{funconMessage(_packet:NetworkPacket)}func==(lhs:iNetworkSubscriber,rhs:iN

ios - 如何根据 Swift 中的字符串创建对象?

这是我想重构的代码:letmyCell=MyCustomTableViewCell()self.createCell(myCell,reuseIdentifierString:"myCellIdentifier")MyCustomTableViewCell符合SetCell协议(protocol),因此可以正常工作。并且SetCell协议(protocol)不是@obj_c协议(protocol)。这是一个快速的协议(protocol)privatefunccreateCell(classType:T,reuseIdentifierString:String)->UITableView

ios - 我可以让 Realm Results 类使用协议(protocol)作为泛型吗?

我想创建两个Realm模型类和一个协议(protocol),由两个模型类采用。例如:classDog:Object,Animal{dynamicvarname=""}classCat:Object,Animal{dynamicvarname=""}protocolAnimal{varname:String{get}}在这种情况下,我创建了两个模型类和一个协议(protocol)。但是,当我转到实现的时候,问题出现了。下面的代码是在ViewController中编写的:vardogs:Results?{returntry!Realm().objects(Dog)}varcats:Resu

swift - 如果一个类实现了声明一个可失败初始化器的协议(protocol),为什么它不必提供可失败初始化器?

我试图理解以下内容,人为,例如:protocolMyProtocol{init?(string:String)}classMyObject:MyProtocol{lets:Stringrequiredinit(string:String){self.s=string}}leto=MyObject(string:"test")print(o.s)MyProtocol声明一个failableinitializer.MyObject符合MyProtocol,示例代码编译和执行没有问题。我的问题是:为什么MyObject不提供可失败的初始化程序(根据MyProtocol)?

ios - 我可以快速支持协议(protocol)的多重继承吗?

在Swift中,通过使用扩展,您可以在“协议(protocol)”中提供方法主体。在我的代码中,我可以提供方法主体,请参阅protocolTest1{funcdisplay()}extensionTest1{funcdisplay(){print("displayTest1")}}protocolTest2{funcdisplay()}extensionTest2{funcdisplay(){print("displayTest2")}}classViewController:UIViewController,Test1,Test2{vartest1:Test1?vartest2:Te

ios - 如何实现与另一个类同名的协议(protocol)

在ObjectiveC中,@interface和@protocol可以同名。如何在Swift中创建一个仅采用协议(protocol)的类?NimbusNICellFactory.h@interfaceNICellObject:NSObject//Designatedinitializer.-(id)initWithCellClass:(Class)cellClassuserInfo:(id)userInfo;-(id)initWithCellClass:(Class)cellClass;+(id)objectWithCellClass:(Class)cellClassuserInfo:

swift - Swift 中的类方法和实例方法有什么区别?

protocolNoteProtocol{varbody:NSString?{getset}varcreatedAt:NSDate?{getset}varentityId:NSString?{getset}varmodifiedAt:NSDate?{getset}vartitle:NSString?{getset}//classmethodsclassfuncinsertNewNoteInManagedObjectContext(managedObjectContext:NSManagedObjectContext!)->NoteProtocolclassfuncnoteFromNot