草庐IT

SMB1Protocol

全部标签

swift - 比较 2 个结构/对象实现相同的协议(protocol)?

假设我有以下内容:protocolP:Equatable{varuniqueID:Int{get}}structA:P{varuniqueID=1}structB:P{varuniqueID=2}func==(lhs:T,rhs:T)->Bool{returnlhs.uniqueID==rhs.uniqueID}现在当我写下以下内容时:leta=A()letb=B()letc=a==b我得到错误:二元运算符“==”不能应用于类型“A”和“B”的操作数有什么办法可以实现吗? 最佳答案 你必须定义两个通用类型的相等函数来允许比较不同的类

ios - 如何遵守 CBCentralManagerDelegate 协议(protocol)?

我正在尝试初始化中央管理器实例以制作具有蓝牙连接的应用。这是我的部分代码:classViewController:UIViewController,CBCentralManagerDelegate{varmyCentralManager=CBCentralManager(delegate:self,queue:nil)//erroronthislinefunccentralManagerDidUpdateState(central:CBCentralManager!){}我得到一个错误:"Type'ViewController->()->ViewController!'doesnotc

ios - 如何将符合具有关联类型的协议(protocol)的不同类型添加到集合中?

作为学习练习,我正在重写我的validationlibrary在Swift中。我有一个ValidationRule协议(protocol),它定义了各个规则应该是什么样子:protocolValidationRule{typealiasInputTypefuncvalidateInput(input:InputType)->Bool//...}关联类型InputType定义要验证的输入类型(例如String)。它可以是明确的或通用的。这里有两条规则:structValidationRuleLength:ValidationRule{typealiasInputType=String//

swift 警告 : 'weak' should not be applied to a property declaration in a protocol

看起来像weakreferenceswillbedisallowedinprotocols.那么如果我想添加一个弱引用,我应该怎么做呢?有更好的主意吗?protocolPipelineElementDelegate:class{funcsomeFunc()}protocolPipelineElement{weakvardelegate:PipelineElementDelegate?{getset}} 最佳答案 只需从协议(protocol)中删除weak关键字,并在符合类型中将属性声明为weak即可:classSomeClass:

ios - Swift 协议(protocol)和扩展,我需要根据需要调用覆盖方法或默认扩展方法

我有一个协议(protocol)Vehicle及其扩展如下:protocolVehicle{funcDrive()}extensionVehicle{funcStop(){print("iiiich...")}}我也有像下面这样的停止方法声明structCar:Vehicle{funcDrive(){print("CanDrive")}funcStop(){print("yostop")}}letmyCar=Car()myCar.Drive()myCar.Stop()但是它覆盖了停止方法//Output//CanDrive//yostop根据我的要求,我有时需要默认方法,有时需要重写方

swift - 在 Swift 中,protocol to inherit from class 关键字是什么意思?

在Swift中,protocoltoinheritfromclass关键字是什么意思?例如protocolMyDelegate:class{} 最佳答案 要点Starscream'sanswer是正确的,但它忽略了我认为在这里很重要的原因。它归结为ARC和内存管理。Swift是一种引用类型和值类型的语言。类是引用类型,而其他一切都是值类型。实际上,我们并没有真正指定协议(protocol)inherits来自class...更像是我们指定协议(protocol)只能由reference实现类型。为什么这很重要?这很重要,因为没有它,

ios - 看看为什么在 Xcode 中是 "type does not conform to protocol"(swift)

我经常使用具有关联类型约束的相对复杂的协议(protocol),这些协议(protocol)被用于泛型,被CoreData类型扩展等使用。因此我相对经常收到错误:Type..doesnotconformtoprotocol...。我通常可以在一段时间后解决这个问题,但错误消息确实没有帮助——通常,如果问题是方法签名中的一个小错字或其他东西,则需要一些时间才能找到错误。对于Java接口(interface),IDE通常会报告类似method...notimplemented之类的信息,因此我知道应该更详细地查看哪个方法。有没有办法让Xcode报告有关协议(protocol)成员的详细信息

swift - Swift 4 中 Codable 协议(protocol)的自定义字典编码器和解码器

如果我有一个符合Codable的结构像这样的协议(protocol):enumAnimalType:String,Codable{casedogcasecatcasebirdcasehamster}structPet:Codable{varname:StringvaranimalType:AnimalTypevarage:IntvarownerName:StringvarpastOwnerName:String?}我如何创建一个编码器和一个解码器,将它编码/解码到/从一个类型的实例Dictionary像这样?letpetDictionary:[String:Any?]=["name":

protocols - 在 Swift 中声明一个符合协议(protocol)的变量或常量

在Swift中,如何声明符合协议(protocol)的变量(或常量)?我试过了letwhatever:protocol和letwhatever:myProtocol但是设置的时候报错Cannotconverttheexpression'stype'()'totype'myProtocol' 最佳答案 没有必要做这样的事情,因为当你声明你的变量(或常量)的类型时,应该知道它是否符合协议(protocol)。但如果有时您使用旧的objcid,您可能会得到一个AnyObject。在这种情况下,您只需进行向下转换,将其转换为协议(proto

objective-c - 如何在 Objective C 数据模型类中使用 Codable 协议(protocol)?

我正在混合搭配iOS源代码。我已经为swift数据模型类实现了可编码,这减少了编写解析器逻辑的负担。我试图使我的objective-c类符合可编码协议(protocol),这又引发了错误“找不到‘可编码’的协议(protocol)声明”。有没有办法将这个快速协议(protocol)用于objective-c类?或者是否有任何其他objective-capi提供与Codable相同的功能?这个想法是让swift和objectivec类的解析逻辑相同。 最佳答案 是的,您可以将Codable与Obj-C一起使用。棘手的部分是因为Obj-