草庐IT

objc-protocol

全部标签

Swift:使用符合相同协议(protocol)的嵌套枚举案例的代码更少

我尝试在以下场景中编写更少的代码:我有这个Queryable协议(protocol)和一个Parameter枚举:protocolQueryable{varurlQuery:URLQueryItem{get}}enumPaginationParameter:Queryable{casepage(Int)casepageSize(Int)varqueryItem:URLQueryItem{switchself{case.page(letpage):returnURLQueryItem(name:"page",value:page.description)case.pageSize(let

swift - 在运行时从 protocol.Type 引用动态实例化

我之前在非常微小的细节,以便真正破解它。swiftprogramtointerface您可能会提示或否决这个问题不完整,但事情就是这样,它基于设计模式,所以如果您不熟悉设计模式或哲学“编程接口(interface)而不是实现”然后不要提示或否决投票。寻找可以破解它的SWIFT专家。祝一切顺利publicprotocolIAnimal{init()funcspeak()}classTest{funcinstantiateAndCallSpeak(animal:IAnimal.Type){//usetheanimalvariabletoinstantiateandcallspeak-//n

arrays - Swift - 将协议(protocol)数组向上转换为 super 协议(protocol)数组会导致错误

在Swift中,我注意到我可以将符合名为SubProtocol的协议(protocol)的对象向上转换为另一个名为SuperProtocol的协议(protocol),它是子协议(protocol)。但是我不能对协议(protocol)数组做同样的事情。这是我在Playground中运行的示例代码:protocolSuperProtocol{}protocolSubProtocol:SuperProtocol{}classMyObject:SubProtocol{}letvalue1:SubProtocol=MyObject()letvalue2:SuperProtocol=value

swift - 将结构数组分配给协议(protocol)数组

假设我有以下内容:protocolMyProtocol{}structMyStruct:MyProtocol{}vars1=MyStruct()vars2=MyStruct()vars3=MyStruct()varstructArray=[s1,s2,s3]当我尝试将这个结构数组分配给协议(protocol)数组时(structArray中的每个结构都符合):varprotocolArray:[MyProtocol]=structArray我收到此错误:无法将类型为“[MyStruct]”的数组转换为指定类型“[MyProtocol]”我希望因为数组中的每个对象都符合协议(protoc

objective-c - Throwing 方法不能是@objc 协议(protocol)的成员,因为它返回类型为 'Bool' 的值

我收到以下错误:Throwingmethodcannotbeamemberofan@objcprotocolbecauseitreturnsavalueoftype'Bool';return'Void'oratypethatbridgestoanObjective-Cclass定义Swift协议(protocol)时也需要桥接到Objective-C:@objcpublicprotocolSaving{funcsave()throws->Bool}是否有其他方法可以定义返回Bool的Swift方法,可能会抛出错误并与Objetive-C兼容? 最佳答案

swift - 在 swift 中,如何返回符合协议(protocol)的相同类型的对象

我有以下协议(protocol)protocolJSONInitializable{staticfuncinitialize(fromJSON:NSDictionary)throws->Self?}现在我试图让该函数返回任何符合协议(protocol)的类。IE。如果我有符合协议(protocol)的Foo类,我想从该方法返回一个Foo对象。我该怎么做?extensionFoo:JSONInitializable{staticfuncinitialize(fromJSON:NSDictionary)throws->Foo?{}}我得到错误:Method'initialize'innon

Swift AnyObject - 将协议(protocol)数组向下转换为 [AnyObject]

如何将协议(protocol)实例数组向下转换为AnyObject?我在下面的代码示例中尝试了一些更合理的想法。protocolNameable:class{varname:String{get}}classPerson:Nameable{varname:Stringinit(name:String){self.name=name}}classExample{funcsetArray(array:[AnyObject]?,forKey:String){print("helloworld")}}varpersonOne=Person(name:"Evan")varpersonTwo=Pe

swift - 如何符合声明类型协议(protocol)属性的协议(protocol)?

我正在尝试创建一个协议(protocol)和几个符合它的类。该协议(protocol)有一个符合另一个协议(protocol)的属性,因此每个类都需要有一个匹配的属性。这是(类似的)我目前正在尝试的:protocolEdible{funceat()}classApple:Edible{funceat(){print("Crunch")}}classBanana:Edible{funceat(){print("Homph")}}protocolDelicious{funcconsume()varfruit:Edible?{getset}}classToffeeApple:Deliciou

【已解决】Using insecure protocols with repositories, without explicit opt-in, is unsupported. Switch Mav

Gradle7.0版本构建项目以上就会出现这个问题bashUsinginsecureprotocolswithrepositories,withoutexplicitopt-in,isunsupported.SwitchMavenrepository'maven(XXX)'toredirecttoasecureprotocol(likeHTTPS)orallowinsecureprotocols根据提示的信息的描述:意思就是maven仓库的配置需要引用HTTPS的方式进行;同时需要针对协议进行限制;解决方案在自己项目的settings.gradle文件里面加入pluginManagement{

ios - 如何编写面向协议(protocol)的部分

这只是我真实示例的模型,我的行是复杂的对象我的表格View有不同的部分类型。enumType{casedevicescaseuserscasestatus}显然每个部分都有一些行,可能有一个headerTitle和一个sectionType,我已经尽可能地概括了这一点。不确定使用associatedType是否是正确的方法......可能有一个更简单的解决方案,只使用协议(protocol)protocolSectionType{associatedtypeSectionassociatedtypeRowsinit(sectionType:Section,rows:Rows)varse