草庐IT

Swift:使用符合相同协议(protocol)的嵌套枚举案例的代码更少

我尝试在以下场景中编写更少的代码:我有这个Queryable协议(protocol)和一个Parameter枚举:protocolQueryable{varurlQuery:URLQueryItem{get}}enumPaginationParameter:Queryable{casepage(Int)casepageSize(Int)varqueryItem:URLQueryItem{switchself{case.page(letpage):returnURLQueryItem(name:"page",value:page.description)case.pageSize(let

swift - 如何在 Swift 的字符串中快速枚举字符串?

这个问题在这里已经有了答案:SplitaStringintoanarrayinSwift?(40个答案)关闭5年前。例如我有通常的快速枚举for(varmyChar:Character)in"HelloWorld!"{//code}这很好用,我可以用这个字符串的每个字符做任何我想做的事。但是如果我想使用字符串而不是字符怎么办,就像这样for(varmyStr:String)in"HelloWorld!"//thisiserror{switchmyStr{case"Hello"://codecase"World!"://codedefault:break}}这个可以实现吗?谢谢

swift - 嵌套枚举作为字典键

为什么这不起作用?注意:如果没有嵌套,枚举作为字典键是有效的。structOuterStruct{enumInnerEnum{casenonecaseacaseb}}vardict:[OuterStruct.InnerEnum:String]=[OuterStruct.InnerEnum:String]() 最佳答案 您可以通过使用传统方式实例化字典来解决这个问题:vardict:[OuterStruct.InnerEnum:String]=Dictionary()请注意,您可以使用类型推断并避免指定变量类型:vardict=Dic

swift - 枚举变量的模式翻转

在Enum状态之间切换的最佳方式是什么?enumEVEN_ODD{caseEven,Odd}var__mode_bit=EVEN_ODD.Even;for_in1...5{__mode_bit=(__mode_bit==.Even)?.Odd:.Even}能否简化__mode_bit?:? 最佳答案 看看关于bool值的Apple文档,他们给出了bool类型枚举的示例:https://developer.apple.com/swift/blog/?id=8由于您可以从原始创建一个枚举,您可以通过以下方式切换值:lettrue=MyB

swift - 对于 swift 中的错误,我应该使用枚举还是类层次结构?

关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭7年前。Improvethisquestion在Swift2中,任何符合ErrorType协议(protocol)的类型都可以被抛出和捕获。对我来说,拥有一个通用的错误层次结构并在多个地方重复使用它是有意义的。但是,Apple文档似乎促使开发人员使用枚举来处理错误。例如,这个层次结构可以让我在不知道它的确切子类型的情况下捕获并处理一个常见的ValidationError。这也将允许应用程序的不同部分扩展ValidationError。

ios - 枚举内存使用

我想知道下面哪个占用内存多structConstants{varage=10}或enumConstants{caseage=10}我还想知道enum和#define在内存存储方面的区别。谁能帮帮我? 最佳答案 长见识您的结构将占用Int的大小,因此在最近的Mac平台上为64位(8字节)。您的枚举通常会占用UInt8的大小,即8位(1字节),但在单例枚举的这种特殊情况下,大小为0位。为了理解这一点,这里有一些细节枚举在内部存储一个整数值以匹配案例。例如这个枚举:enumDirection{caseeast,west,south,nor

Swift 枚举不等式

我习惯了能够治疗enums作为数值,因此使用像>这样的运算符,等。对于大多数枚举用途,这可能不是那么必要,但有一种情况是这样的:@objcpublicenumMyState:Int{caseLoading=0caseLoadedcaseResolvedcaseProcessed}我希望能够获取一个实例变量并检查它:varstate:MyState=...ifstate>.Loaded{...}但是Swift提示它不知道该做什么。我已将枚举声明为Int。是我比较rawValue的唯一选择秒?我希望避免这种情况,因为它会变得非常丑陋,而且Swiftsooo会自行关闭。

ios - 表达式类型不明确,没有更多上下文(枚举)

enum的一个小问题。publicenumLHActivityTypeID:String{caseRun="16"caseBike="41"}尝试在其他文件中使用它(是的,我的枚举是全局的):if(activity.activity_type?.id==.Bike){self?.allItems.append(activity)}Error>Typeofexpressionisambiguouswithoutmorecontext我知道编译器需要更多关于枚举的信息,但我找不到如何做到这一点,我已经尝试了很多东西并阅读了一些其他帖子。谢谢你的帮助 最佳答案

swift - 为什么我不能在 Swift 3 中打印枚举的案例名称?

我在Swift3中有一个枚举,我可以使用以下代码打印它的名称:枚举定义publicenumFoo:Int{caseF1}以下代码将在控制台中获得F1print(Foo.F1)但是当我尝试打印Charts中定义的枚举时我只能在控制台获取Horizo​​ntalAlignmentprint(Legend.HorizontalAlignment.center)这是为什么? 最佳答案 因为枚举被声明为@objc。在Legend.swift:@objc(ChartLegendHorizontalAlignment)publicenumHori

swift - 比较 swift 中的枚举等级(Swift 书中的练习)

我刚开始学习编程,正在尝试完成Swift编程书中的实验。它要求““编写一个函数,通过比较两个Rank值的原始值来比较它们。”enumRank:Int{caseAce=1caseTwo,Three,Four,Five,Six,Seven,Eight,Nine,TencaseJack,Queen,KingfuncsimpleDescription()->String{switchself{case.Ace:return"ace"case.Jack:return"jack"case.Queen:return"queen"case.King:return"king"default:return