简化CFG Swift Enum Rawvalue

时间:2015-04-11 23:09:23

标签: swift enums llvm

我在Xcode中存档或配置文件时收到以下错误。奇怪的是,在构建,分析或测试时不会发生此错误。

我收到以下错误:

Running pass 'Simplify the CFG' on function '@_TFO9HVAC_Plus10Paragrafeng5titleSS'

我发现问题出在以下几行代码中:

var title: String {
    return rawValue
}

如您所见,title是枚举的属性。 Xcode 6.3中出现错误

这是我的其余代码:

enum Paragrafen: String, Enumeratable, Printable {
    case Transmissieverlies = "52.1 Bepalen transmissieverlies per meter geïsoleerde buis"
    case BreedteRechthoekigKanaal = "61.1 Bepalen breedte rechthoekig kanaal"
    case SnelheidRechthoekigKanaal = "61.2 Bepalen snelheid rechthoekig kanaal"
    case WeerstandRechthoekigKanaal = "61.3 Bepalen weerstand rechthoekig kanaal"
    case SnelheidRondKanaal = "61.4 Bepalen snelheid rond kanaal"
    case WeerstandRondKanaal = "61.5 Bepalen weerstand rond kanaal"
    case VentilatorVermogenEnElektraVerbruik = "61.6 Bepalen ventilator vermogen en elektra verbruik"

    var unlocked: Bool {
        get {
            return NSUserDefaults.standardUserDefaults().boolForKey(self.searchTitle)
        }
        set {
            let def = NSUserDefaults.standardUserDefaults()
            def.setBool(newValue, forKey: self.searchTitle)
            def.synchronize()
        }
    }

    var searchTitle: String {
        switch self {
        case .Transmissieverlies:
            return "52_transmissieverlies"
        case .BreedteRechthoekigKanaal:
            return "61_breedte"
        case .SnelheidRechthoekigKanaal:
            return "61_snelheid_recht"
        case .WeerstandRechthoekigKanaal:
            return "61_weerstand_recht"
        case .SnelheidRondKanaal:
            return "61_snelheid_rond"
        case .WeerstandRondKanaal:
            return "61_weerstand_rond"
        case .VentilatorVermogenEnElektraVerbruik:
            return "61_ventilator_vermogen_verbruik"
        }
    }

    static var allValues: [Enumeratable] { return [Paragrafen.Transmissieverlies, Paragrafen.BreedteRechthoekigKanaal, Paragrafen.SnelheidRechthoekigKanaal, Paragrafen.WeerstandRechthoekigKanaal, Paragrafen.SnelheidRondKanaal, Paragrafen.WeerstandRondKanaal, Paragrafen.VentilatorVermogenEnElektraVerbruik] }


    static func paragrafenForHoofdstuk(hoofdstuk: Hoofdstukken) -> [Paragrafen] {
        switch hoofdstuk{
        case .Tapwaterinstallaties:
            return [Paragrafen.Transmissieverlies]
        case .Luchtbehandelingsinstallaties:
            return [Paragrafen.BreedteRechthoekigKanaal, Paragrafen.SnelheidRechthoekigKanaal, Paragrafen.WeerstandRechthoekigKanaal, Paragrafen.SnelheidRondKanaal, Paragrafen.WeerstandRondKanaal, Paragrafen.VentilatorVermogenEnElektraVerbruik]
        }
    }

    var calculation: Calculations {
        switch self {
        case .Transmissieverlies:
            return Calculations.Transmissieverlies
        case .BreedteRechthoekigKanaal:
            return Calculations.BreedteRechthoekigKanaal
        case .SnelheidRechthoekigKanaal:
            return Calculations.SnelheidRechthoekigKanaal
        case .WeerstandRechthoekigKanaal:
            return Calculations.WeerstandRechthoekigKanaal
        case .SnelheidRondKanaal:
            return Calculations.SnelheidRondKanaal
        case .WeerstandRondKanaal:
            return Calculations.WeerstandRondKanaal
        case .VentilatorVermogenEnElektraVerbruik:
            return Calculations.VentilatorVermogenEnElektraVerbruik
        }
    }

    var title: String {
        return rawValue as String
    }

    var description: String {
        return title
    }

    var hoofdstuk: Hoofdstukken {
        switch self {
        case .Transmissieverlies:
            return Hoofdstukken.Tapwaterinstallaties
        case .BreedteRechthoekigKanaal, .SnelheidRechthoekigKanaal, .WeerstandRechthoekigKanaal, .SnelheidRondKanaal, .WeerstandRondKanaal, .VentilatorVermogenEnElektraVerbruik:
            return Hoofdstukken.Luchtbehandelingsinstallaties
        }
    }
}

1 个答案:

答案 0 :(得分:0)

我在我的项目中尝试了一些东西,现在它构建得非常好。这就是我所做的(我不知道究竟是什么解决了我的问题,它是下面提到的措施之一还是它们的组合):

  • 我删除了对rawValue的引用
  • 我减少了rawValue的内存大小(将“61.1 ....”更改为“61.1”
  • 我在标题中添加了一个开关,以确保我获得正常值

这是我的新代码(虽然仍然有点乱):

enum Paragrafen: String, Enumeratable, Printable {
    case Transmissieverlies = "52.1"// = "52.1 Bepalen transmissieverlies per meter geïsoleerde buis"
    case BreedteRechthoekigKanaal = "61.1"// Bepalen breedte rechthoekig kanaal"
    case SnelheidRechthoekigKanaal = "61.2"// Bepalen snelheid rechthoekig kanaal"
    case WeerstandRechthoekigKanaal = "61.3"// Bepalen weerstand rechthoekig kanaal"
    case SnelheidRondKanaal = "61.4"// Bepalen snelheid rond kanaal"
    case WeerstandRondKanaal = "61.5"// Bepalen weerstand rond kanaal"
    case VentilatorVermogenEnElektraVerbruik = "61.6"// Bepalen ventilator vermogen en elektra verbruik"

    var unlocked: Bool {
        get {
            return NSUserDefaults.standardUserDefaults().boolForKey(self.searchTitle)
        }
        set {
            let def = NSUserDefaults.standardUserDefaults()
            def.setBool(newValue, forKey: self.searchTitle)
            def.synchronize()
        }
    }

    var searchTitle: String {
        switch self {
        case .Transmissieverlies:
            return "52_transmissieverlies"
        case .BreedteRechthoekigKanaal:
            return "61_breedte"
        case .SnelheidRechthoekigKanaal:
            return "61_snelheid_recht"
        case .WeerstandRechthoekigKanaal:
            return "61_weerstand_recht"
        case .SnelheidRondKanaal:
            return "61_snelheid_rond"
        case .WeerstandRondKanaal:
            return "61_weerstand_rond"
        case .VentilatorVermogenEnElektraVerbruik:
            return "61_ventilator_vermogen_verbruik"
        }
    }

    static var allValues: [Enumeratable] { return [Paragrafen.Transmissieverlies, Paragrafen.BreedteRechthoekigKanaal, Paragrafen.SnelheidRechthoekigKanaal, Paragrafen.WeerstandRechthoekigKanaal, Paragrafen.SnelheidRondKanaal, Paragrafen.WeerstandRondKanaal, Paragrafen.VentilatorVermogenEnElektraVerbruik] }


    static func paragrafenForHoofdstuk(hoofdstuk: Hoofdstukken) -> [Paragrafen] {
        switch hoofdstuk{
        case .Tapwaterinstallaties:
            return [Paragrafen.Transmissieverlies]
        case .Luchtbehandelingsinstallaties:
            return [Paragrafen.BreedteRechthoekigKanaal, Paragrafen.SnelheidRechthoekigKanaal, Paragrafen.WeerstandRechthoekigKanaal, Paragrafen.SnelheidRondKanaal, Paragrafen.WeerstandRondKanaal, Paragrafen.VentilatorVermogenEnElektraVerbruik]
        }
    }

    var calculation: Calculations {
        switch self {
        case .Transmissieverlies:
            return Calculations.Transmissieverlies
        case .BreedteRechthoekigKanaal:
            return Calculations.BreedteRechthoekigKanaal
        case .SnelheidRechthoekigKanaal:
            return Calculations.SnelheidRechthoekigKanaal
        case .WeerstandRechthoekigKanaal:
            return Calculations.WeerstandRechthoekigKanaal
        case .SnelheidRondKanaal:
            return Calculations.SnelheidRondKanaal
        case .WeerstandRondKanaal:
            return Calculations.WeerstandRondKanaal
        case .VentilatorVermogenEnElektraVerbruik:
            return Calculations.VentilatorVermogenEnElektraVerbruik
        }
    }

    var paragraphTitle: String {
        switch self {
        /*case Paragrafen.Transmissieverlies:
            return "52.1 Bepalen transmissieverlies per meter geïsoleerde buis"
        case Paragrafen.BreedteRechthoekigKanaal:
            return "61.1 Bepalen breedte rechthoekig kanaal"
        case Paragrafen.SnelheidRechthoekigKanaal:
            return "61.2 Bepalen snelheid rechthoekig kanaal"
        case Paragrafen.WeerstandRechthoekigKanaal:
            return "61.3 Bepalen weerstand rechthoekig kanaal"
        case Paragrafen.SnelheidRondKanaal:
            return "61.4 Bepalen snelheid rond kanaal"
        case Paragrafen.WeerstandRondKanaal:
            return "61.5 Bepalen weerstand rond kanaal"
        case Paragrafen.VentilatorVermogenEnElektraVerbruik:
            return "61.6 Bepalen ventilator vermogen en elektra verbruik"*/
        case .Transmissieverlies:
            return "Transmissieverlies"
        case .BreedteRechthoekigKanaal:
            return "Bepalen breedte rechthoekig kanaal"
        default:
            return ""
        }
    }

    var description: String {
        return paragraphTitle
    }

    var hoofdstuk: Hoofdstukken {
        switch self {
        case .Transmissieverlies:
            return Hoofdstukken.Tapwaterinstallaties
        case .BreedteRechthoekigKanaal, .SnelheidRechthoekigKanaal, .WeerstandRechthoekigKanaal, .SnelheidRondKanaal, .WeerstandRondKanaal, .VentilatorVermogenEnElektraVerbruik:
            return Hoofdstukken.Luchtbehandelingsinstallaties
        }
    }
}