草庐IT

枚举法

全部标签

swift - 当枚举符合协议(protocol) CustomStringConvertible 时,是否可以从变量中获取枚举描述?

当枚举符合协议(protocol)CustomStringConvertible时,是否可以从变量中获取枚举描述?简化的定义是:enummyEnum:CustomStringConvertible{caseone(p1:Int)casetwo(p:CGPoint)caseaaa1caseaaa2vardescription:String{return"uselesstext"}}没有协议(protocol)很容易:lettestCases=[en.one(p1:10),en.two(p:CGPoint(x:2,y:3)),en.aaa1,en.aaa2]testCases.forEac

用于检查大小写的 Swift 通用枚举函数

如果枚举实例是枚举类型,是否可以创建一个返回bool值的通用枚举函数,或者它是否已经存在但我不知道?我在我的项目中使用了大量的枚举。我经常定义具有关联值的枚举。简单示例:enumMode{casenewcaseedit(Record)//Recordisastructtype}我会定期检查枚举实例是否是特定的枚举案例。然而,很多时候,我不需要检查关联值。我正在寻找一种方便的方法来检查案例。我所知道的每种方法都有缺点。方法1-2:IfCase模式匹配或SwitchcaseletmyMode=Mode.editifcaseMode.edit(_)=myMode{//dosomething}

swift - 私有(private)枚举中案例的访问级别是多少

我从swift.org阅读了有关Swift5.1的文档,并对枚举中的访问级别有一些疑问。https://docs.swift.org/swift-book/LanguageGuide/AccessControl.html#ID14在文档中,它说:Theindividualcasesofanenumerationautomaticallyreceivethesameaccesslevelastheenumerationtheybelongto.privateenumSomePrivateEnum{caseonecasetwocasethree}privateclassSomePrivat

swift - Swift 中的递归枚举

我学习Swift2(和C,但也不会学太久)的时间不长,我已经到了在递归枚举方面苦苦挣扎的地步。如果它是递归的,我似乎需要将indirect放在enum之前。然后我有第一个在括号之间有Int的情况,因为稍后在switch中它返回一个Integer,对吗?现在第二个案例Addition出现了第一个问题。我必须将ArithmeticExpression放在括号之间。我尝试将Int放在那里,但它给了我一个必须是ArithmeticExpression而不是Int的错误。我的问题是为什么?我无法想象那是什么。为什么我不能把两个Int放在那里?下一个问题又是关于ArithmeticExpressi

Swift:以编程方式枚举来自 UIVIewController 的传出 segues

我想列出来自UIViewController的输出转场,如ProgrammaticallyenumerateoutgoingSeguesforaUIViewController中所述,但在Swift中。(swift2、Xcode7、iOS8+)。我可以overridefuncviewDidLoad(){super.viewDidLoad()lets=valueForKey("storyboardSegueTemplates")print("switchingVC:segues:\(s)")}并且产生类似的输出switchingVC:segues:Optional(("","",""))

swift - 如何为没有枚举的枚举添加原始值?

给定一个我无法更改的外部枚举:enumMyEnum{casefirstcasesecond}我如何最好地使这个RawRepresentable,或者至少可以转换为Int(或String)?我可以编写一个扩展来模仿rawValue,但这感觉很笨拙:extensionMyEnum{enumEnumError:Error{caseinvalidValue}init(rawValue:Int)throws{switchrawValue{case0:self=.firstcase1:self=.seconddefault:throwEnumError.invalidValue}}varrawVa

swift - 使用不存在的 rawValue 初始化的枚举不会失败并返回 nil

我在playground(Xcode9.0.1)中有以下代码:importMapKitenumTest:UInt{casefirstcasesecondcasethird}lettest=Test(rawValue:4)asAnyprint(test)//nillettype=MKMapType(rawValue:999)print(type==nil)//falseprint(type!.rawValue)//999MKMapType定义为enumMKMapType:UInt由于MKMapType的最大值为5,我希望枚举的初始化程序失败并返回nil。相反,它返回999。我是否在这里遗

ios - 将枚举类型添加到 Swift 数组时出错

我正在尝试将枚举类型添加到数组中,但出现错误。我能够添加一个String和其他类型,但是这个枚举失败了。有谁知道这里可能出了什么问题?enumDomain{caseDefault}letdomains:Array=[.Default]线程1:EXC_BAD_INSTRUCTION(代码=EXC_i386_INVOP,子代码=0x0) 最佳答案 这绝对是一个Apple错误-记录它!https://bugreport.apple.com将第二个案例添加到您的枚举(例如案例其他),然后看到错误不再发生。当枚举只有一种情况时,Swift中发

objective-c - 枚举 Objective-C 和 Swift 之间的互操作性

我正在将项目的一部分移植到Swift上,发现枚举不可互操作。此外,任何使用枚举的属性和函数都不会暴露给objective-c,因为枚举在objective-c中不具有等效性。即使枚举是NSInteger类型,枚举仍然不会暴露。如何解决这个互操作性问题,使swift类尽可能干净? 最佳答案 Swift2:在Swift2中,您现在可以将枚举公开给Objective-C。使枚举成为非泛型,从简单的数字类型(如Int)继承,并且不使用关联值。然后它会出现在Objective-C中,枚举的名称预先附加到案例中,因此它看起来像一个Objecti

swift - 嵌套枚举以允许多个时间范围

我希望实现某种风格的枚举语法/功能,但我不确定如何实现它。目前我有以下内容:internalenumTimeframe:Equatable{//MARK:-Casescasehour(count:Int)caseday(count:Int)caseweek(count:Int)casemonth(count:Int)caseyear(count:Int)caseallcaseexact(date:Date)caseunspecified}除非需要,否则我想消除计数关联值。例如:letoneDayTimeframe:Timeframe=.daylettwoDayTimeframe:Tim