草庐IT

枚举法

全部标签

swift - 具有默认值的非失败枚举初始值设定项

有没有办法定义一个枚举,当从rawValue初始化时将默认为某个值而不是失败?在值可能出乎意料的情况下很有用(即服务器API错误) 最佳答案 你是说类似的意思吗?enumErrorCode:Int{caseNoErr=0,Err1,Err2,LastErr,DefaultErrinit(value:Int){if(value>LastErr.rawValue){self=.DefaultErr}else{self=ErrorCode(rawValue:value)!}}}leterror:ErrorCode=.LastErrleta

swift - 如何编写协议(protocol)扩展以从 Swift 枚举中获取所有 rawValues

我想做的是创建一个协议(protocol)扩展来从枚举中获取一组原始值。例如说我有以下内容:enumTestType:String,EnumIteratable{caseunitTest="UnitTest"caseuiTest="UITest"}classEnumIterator:NSObject{classfunciterateEnum(_:T.Type)->AnyGenerator{vari=0returnanyGenerator{letnext=withUnsafePointer(&i){UnsafePointer($0).memory}returnnext.hashValue

swift - 有没有办法在 Swift (KVO) 中制作可观察枚举

我正在尝试使用RxSwift在MVVM中进行绑定(bind)。我有一个Enum:enumColor:Int{caseRed=0,Green}和测试类classTest:NSObject{varcolor:Color=.Reddynamicvartest:String?{didSet{print("didSet\(test)")}}}并希望观察如下变化:test.rx_observe(Color.self,"color").subscribeNext{(color)->Voidinprint("Observer\(color)")}.addDisposableTo(bag)但程序追逐**

objective-c - 将 0 作为枚举选项传递给 Swift 中的 Objective C 函数

有些Objective-C库的函数将整数枚举选项作为参数,但如果您需要默认选项,它们希望您传递0,这很典型。但在Swift中,这是不允许的,因为库指定了枚举类型。除了向库添加0枚举选项然后制作桥接代码以使其ObjC枚举在Swift中工作之外,是否有任何解决方法?这是一个在iPhone应用程序中使用SDWebImageManager的示例:SDWebImageManager.sharedManager().downloadWithURL(url,options:0,progress:nil){(image:UIImage!,error:NSError!,cacheType:SDImage

Swift 枚举错误 : Braced block of statements is an unused closure

Swift中的枚举看起来真的很强大,但是......我一定是遗漏了一些关于我如何实现它的东西。我想为远程媒体播放器定义一些操作。似乎是枚举的一个很好的用例。我已经在Enum中定义了允许的消息类型,我想用它来获取修改后的参数字典。参数最终将作为JSON发送给播放器。目前,我遇到了Bracedblockofstatementsisanunusedclosure错误。这是相关代码:publicenumPlayerCommand{casePlaycasePausecaseLoad(String)funcparams(cmd_id:NSInteger)->[String:Any]{vardict

ios - 如何在 Swift 协议(protocol)可选函数中使用枚举作为参数

我在Swift中有这个枚举enumDirection:Int{caseLeft2Right=0,Right2Left}还有这个协议(protocol)@objcprotocolCellDelegate:NSObjectProtocol{optionalfunchas(direction:SwipeDirection)->Bool}我收到这个错误方法不能被标记为@objc,因为参数的类型不能在Objective-C中表示谁能告诉我为什么会出现此错误以及如何解决?谢谢! 最佳答案 @objc属性使协议(protocol)与Objecti

swift - 使用枚举的默认值作为字典键而不显式转换为 String

如果我声明一个enum像这样:enumKeys{casekey_onecasekey_two}我可以打印它,它会自动转换为String:print(Keys.key_one)//prints"key_one"如果我然后制作一个映射Strings的字典无论是什么(但为了简单起见,让我们再次选择Strings),我认为它应该能够通过使用Keys.key_one添加key作为关键,对吧?错了。varmyDict=[String:String]()///error:cannotsubscriptavalueoftype'[String:String]'withanindex///oftype'

swift - 使用关联值时获取枚举名称

我有一个枚举定义如下enumFruit{caseApple(associatedValue:String)caseOrange(associatedValue:String)}我有一个接受Fruit类型参数的函数funcprintNameOnly(fruit:Fruit){}在此函数中,我想将枚举大小写作为字符串获取,即我想获取字符串“Apple”或“Orange”,而不考虑关联值是什么。这对Swift来说可能吗?我显然可以编写一个函数,该函数采用fruit枚举并使用case语句返回一个字符串,但我试图找到一种方法来避免这种情况,因为我想要的字符串是枚举case名称本身。

swift - Swift 代码中 Obj C 枚举的 Xcode 7.3 未声明类型

在我的项目中,我对ObjectiveC枚举进行了Swift扩展,它在Xcode7.2中表现出色。但是在Xcode7.3中,它在我扩展ObjC枚举的Swift文件中出现“未声明的类型”失败。我已经构建了一个示例项目,它编译并运行良好,但我无法让现有项目接受ObjC枚举的扩展。更新:重新安装Xcode7.2后,我可以确认项目编译和构建成功。在Xcode7.2中运行后,我尝试在Xcode7.3中再次启动该项目,但同样的问题再次出现->无法构建基于ObjC枚举的Swift扩展。在Xcode7.3中清理和删除派生数据后,我还收到-Swift.hheadermissing错误,因为Swift类尚未

ios - 是否可以在 RealmSwift 中使用枚举?

我想做这样的事情:enumWeekDay{caseMonday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday}classPerson:Object{dynamicvarbirthday:WeekDay?=.Mondaydynamicvarid:String?=nildynamicvarbirthdayRaw:String?=niloverridestaticfuncprimaryKey()->String?{return"id"}}但是,我收到一个错误:Propertycannotbemarkeddynamicbecauseitst