ios – 如何获取快速枚举的关联值,而不管枚举大小写

ios – 如何获取快速枚举的关联值,而不管枚举大小写,第1张

概述我有一个对象FormField有两个属性:一个String名称和一个值可以接受任何类型 – 因此我已经做了任何!但是,我在 a separate question中被告知使用带有关联值而不是Any!的枚举。 enum Value { case Text(String!) case CoreDataObject(NSManagedObject!)}class FormField 我有一个对象FormFIEld有两个属性:一个String名称和一个值可以接受任何类型 – 因此我已经做了任何!但是,我在 a separate question中被告知使用带有关联值而不是Any!的枚举。

enum Value {    case Text(String!)    case CoreDataObject(NSManagedobject!)}class FormFIEld {    var name: String    var value: Value?    // initializers...}

然而,这种方法使它非常详细地检查无效。如果我想为表单中缺少的所有字段显示警报视图,我必须对switch语句中的每个案例重复一次零检查:

for fIEld in self.fIElds {    if let value = fIEld.value {        switch value {        case .Text(let text):            if text == nil {                missingFIElds.append(fIEld.name)            }        case .CoreDataObject(let object):            if object == nil {                missingFIElds.append(fIEld.name)            }        }    }}

是否有更短的方式来访问枚举的关联值,不管类型如何?如果我做FormFIEld.value一个任何!上面的代码将是一样简单:

for fIEld in self.fIElds {    if fIEld.value == nil {        missingFIElds.append(fIEld.name)    }}
解决方法 在枚举中定义一个方法isMissing() – 一次只写一次。那么你几乎完全是你喜欢的:

for fIEld in self.fIElds {    if fIEld.value.isMissing() {        missingFIElds.append(fIEld.name)    }}

看起来像这样(来自Swift Interpreter):

1> class Foo {}   >  2> enum Value {   3.     case One(Foo!)   4.     case Two(Foo!)   5.        6.     func isMissing () -> Bool {   7.         switch self {   8.         case let .One(foo): return foo == nil   9.         case let .Two(foo): return foo == nil  10.         }  11.     }  12. }     13> let aVal = Value.One(nil)aVal: Value = One {  One = nil} 14> aVal.isMissing()$R0: Bool = true
总结

以上是内存溢出为你收集整理的ios – 如何获取快速枚举的关联值,而不管枚举大小写全部内容,希望文章能够帮你解决ios – 如何获取快速枚举的关联值,而不管枚举大小写所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1036583.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-24
下一篇2022-05-24

发表评论

登录后才能评论

评论列表(0条)

    保存