我正在重构这个“Swift-Tac-Toe”tutorial中的一些代码.我的目标是创建几个枚举来模拟Tic-Tac-Toe棋盘,而不是依赖与游戏棋盘方block对应的“魔数(MagicNumber)”整数。我有一个对应于具有原始Int值的每个图block:enumTileLocation:Int{caseTopLeft=1,TopMiddle=2,TopRight=3,MiddleLeft=4,Center=5,MiddleRight=6,BottomLeft=7,BottomMiddle=8,BottomRight=9}我想创建一个TileRow枚举,它表示代表“三合一”胜利条件的
我有一个方法可以调用某个管理器的方法来使用某个键保存int值。我的方法接收int和一些EnumKey枚举值作为键,提取EnumKey的rawValue并将其作为字符串传递给管理器:set(value:Int,forKeykey:EnumKey){SomeManager.saveIntValueWithStringKey(valueToSave:value,keyToSave:key.rawValue)}enumEnumKey:String{caseOne="firstkey"caseTwo="secondkey"}我想通过允许我的方法接收每个带有字符串原始值而不是EnumKey的枚举来
我正在使用Swift3开发iOS应用程序,但遇到了一个问题。我有一个枚举:enumMapMode:Equatable{casescenescasetemperaturecaseeditingScenecaseeditingWaterfall(waterfall:Waterfall,mode:PumpEditorMode,waterfallScene:WaterfallScene?)caseeditingWaterfallScenes(waterfall:Waterfall)caseeditingTemperature(thermostate:Thermostat)caseediting
我有一个Swiftenum定义如下:@objcenumSomeEnum:Int{caseone,two}我可以使用SomeEnum通常在Objetive-C文件中,但是当我想在头文件中声明一个属性时,如下所示:@property(nonatomic,assign)SomeEnumsomeEnum;编译器给出错误信息Unknowntypename'SomeEnum'.有趣的是,我可以在类的私有(private)接口(interface)中创建一个属性。我也尝试清理构建文件夹,但没有帮助。文件-Swift.h已导入.pch文件。您知道问题的根源是什么吗? 最佳答
当case具有关联值时,如何测试枚举相等性?一个人为的例子:enumStatus:Equatable{casesuccesscasefailed(error:String)staticfunc==(lhs:Status,rhs:Status)->Bool{switch(lhs,rhs){case(.success,.success),(.failed,.failed):returntruedefault:returnfalse}}}letstatuses=[Status.success,.failed(error:"error1"),.failed(error:"error2"),.s
这是我的枚举:enumObject:Int{caseHouse1=0caseHouse2=1vardescriptor:String{switchself{case.House1:return"Cottage"case.House2:return"House"}}}我想知道如果我提供描述符的值,是否有办法让rawValue返回?例如,如果我的字符串是“Cottage”,我想知道枚举值(它应该返回0)我怎样才能做到这一点? 最佳答案 您可以为您的枚举创建一个初始化程序,它接受描述符并返回它的枚举值,然后只需调用enumValue.ra
要比较具有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
我在我的应用程序中添加了一些语法糖,但我遇到了“不一致”。这可能有充分的理由,但有没有办法稍微清理一下实现。我这样做是为了提供一个地方来设置/获取一些属性。enumMyType:String{caseUnknown,First,Secondvarenabled:Bool{set{UserDefaults.standard.set(newValue,forKey:self.rawValue)}get{returnUserDefaults.standard.bool(forKey:self.rawValue)}}}现在我可以使用枚举值来获取默认值ifMyType.First.enabled
我正在尝试效仿Matt的一个例子,但我遇到了一些奇怪的事情。我创建了一个名为Router.swift的文件并粘贴了以下代码:////Router.swiftimportAlamofireenumRouter:URLRequestConvertible{staticletbaseURLString="http://example.com"caseCreateUser([String:AnyObject])caseReadUser(String)caseUpdateUser(String,[String:AnyObject])caseDestroyUser(String)varmethod
我的第一个ViewController中有这个prepareForSegue,里面有一个枚举overridefuncprepareForSegue(segue:UIStoryboardSegue,sender:AnyObject?){enumTypeOfSegue{caseEdit,Create}ifletDestViewController:DetailViewController=segue.destinationViewControlleras?DetailViewControllerwheresegue.identifier=="EditItem"{letedit=TypeOf