在 Swift 中将 switch 转换为 if else

Posted

技术标签:

【中文标题】在 Swift 中将 switch 转换为 if else【英文标题】:Convert switch to if else in Swift 【发布时间】:2017-11-20 14:58:49 【问题描述】:

我想将 SwiftyJSON 的所有 switch 语句转换为 if-else 条件,因为 switch 语句会导致大量内存泄漏。

我几乎已经转换了所有的 switch 语句,但我被这个卡住了:

fileprivate subscript(sub sub: JSONSubscriptType) -> JSON 
    ...
    switch sub.jsonKey 
        case .index(let index): return self[index: index]
        case .key(let key): return self[key: key]
    
    ...


public enum JSONKey 
    case index(Int)
    case key(String)

有人可以帮帮我吗?

【问题讨论】:

【参考方案1】:
switch sub.jsonKey 
    case .index(let index): return self[index: index]
    case .key(let key): return self[key: key]

将会

if case .index(let index) = sub.jsonKey 
    return self[index: index]
 else if case .key(let key) = sub.jsonKey 
    return self[key: key]

或抽象地

switch value 
   case .a(let x): doFoo(x)
   case .b(let y): doBar(y)

变成

if case .a(let x) = value 
    doFoo(x)
 else if case .b(let y) = value 
    doBar(y)

【讨论】:

以上是关于在 Swift 中将 switch 转换为 if else的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Swift 中将 Int 转换为字符

在 Swift 中将 Int 转换为 String

在 Swift 中将字节数组转换为 UIImage

如何在 Swift 中将 NSDateComponents 转换为 DateComponents

如何在 Swift 中将 CMSampleBuffer 转换为数据?

在 Xcode 6 中将 .storyboard 文件转换为原始 swift 代码