草庐IT

swift - 与 Int 比较的枚举

要比较具有Int作为我添加的原始值的枚举:func(a:T,b:T)->BoolwhereT.RawValue:Comparable{returna.rawValue现在我可以:enumFoo:Int{casea=1caseb=2}leta=Foo.aletb=Foo.bprint(a但是我应该怎么做才能比较枚举,例如:print(b 最佳答案 你只会做更多你已经在做的事情:func(a:T,b:Int)->BoolwhereT.RawValue==Int{returna.rawValue

Swift 枚举值不可设置

我在我的应用程序中添加了一些语法糖,但我遇到了“不一致”。这可能有充分的理由,但有没有办法稍微清理一下实现。我这样做是为了提供一个地方来设置/获取一些属性。enumMyType:String{caseUnknown,First,Secondvarenabled:Bool{set{UserDefaults.standard.set(newValue,forKey:self.rawValue)}get{returnUserDefaults.standard.bool(forKey:self.rawValue)}}}现在我可以使用枚举值来获取默认值ifMyType.First.enabled

swift - 声明枚举路由器 Alamofire swift 2.0

我正在尝试效仿Matt的一个例子,但我遇到了一些奇怪的事情。我创建了一个名为Router.swift的文件并粘贴了以下代码:////Router.swiftimportAlamofireenumRouter:URLRequestConvertible{staticletbaseURLString="http://example.com"caseCreateUser([String:AnyObject])caseReadUser(String)caseUpdateUser(String,[String:AnyObject])caseDestroyUser(String)varmethod

ios - 是否可以通过 segue 快速传递枚举

我的第一个ViewController中有这个prepareForSegue,里面有一个枚举overridefuncprepareForSegue(segue:UIStoryboardSegue,sender:AnyObject?){enumTypeOfSegue{caseEdit,Create}ifletDestViewController:DetailViewController=segue.destinationViewControlleras?DetailViewControllerwheresegue.identifier=="EditItem"{letedit=TypeOf

swift - Swift 中的枚举模式匹配

我刚开始学习Swift并试图理解模式匹配。我找到了下一个例子:privateenumEntities{caseOperand(Double)caseUnaryOperation(Double->Double)caseBinaryOperation((Double,Double)->Double)}后来我使用模式匹配来找出实体的类型funcevaluate(entity:Entities)->Double?{switchentity{case.Operand(letoperand):returnoperand;case.UnaryOperation(letoperation):retur

ios - Swift 枚举值不可访问

这个问题在这里已经有了答案:Whycan'tIuse'Type'asthenameofanenumembeddedinastruct?(2个答案)关闭7年前。我有以下类,其中定义了枚举:publicclassMyError:NSError{publicenumType:Int{caseConnectionErrorcaseServerError}init(type:Type){super.init(domain:"domain",code:type.rawValue,userInfo:[:])}}当我稍后在我的测试中尝试检查错误时,例如:expect(error.code).to(eq

swift - 字符串类型的枚举与具有静态常量的结构

似乎当需要使用枚举(字符串类型)时,也可以使用使用静态字段的结构来实现。例如enumTest:String{caseTestCase1caseTestCase2caseTestCase3}或structTest{staticletTestCase1="TestCase1"staticletTestCase2="TestCase2"staticletTestCase3="TestCase3"}什么时候枚举方法优于其他方法,反之亦然? 最佳答案 它们都非常可行。我曾经争辩说枚举方法不太灵活,因为你必须明确地询问原始值才能到达底层字符串,

swift - 枚举的自省(introspection)和迭代

是否有可能以编程方式找出Swift2中枚举有多少个“案例”并对其进行迭代?此代码无法编译,但它让您了解我要实现的目标:enumHeaderStyles{caseh1caseh2caseh3}foriteminHeaderStyles{print(item)} 最佳答案 遍历所有情况的最简单方法是制作一个计算属性,该属性返回它们的Array:enumSomeEnum{caseZero,One,TwostaticvarallCases:[SomeEnum]{return[.Zero,.One,.Two]}}如果你想要一个自动数组,你可以

swift - 枚举、结构、类之间有什么区别

这个问题在这里已经有了答案:HowshouldIreasonwhenIhavetochoosebetweenaclass,structandenuminSwift?(7个答案)关闭6年前。所以我一直在网上搜索,但找不到这三个的任何简单定义。我知道枚举和结构可以包含属性、初始化器和方法,并且这两种数据结构也通过“值”传递,但仅此而已......我想知道,这3个(枚举、结构、类)有什么区别?在每个最简单的定义中?

swift - 将多个枚举与单个 guard 案例匹配?

我想匹配多个枚举并且有这样的东西:guardcase.north=$0,case.south=$0else{return}有没有办法将其压缩为这样的单个语句?guardcase(.north,.south)=$0else{return}上面没有编译,但希望我能做这样的事情。有替代方案吗? 最佳答案 您可以将所需的案例放入文字数组中,并使用contains来测试匹配:guard[.north,.south].contains($0)else{return} 关于swift-将多个枚举与单个