
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 – 如何获取快速枚举的关联值,而不管枚举大小写所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)