2016-03-21 16 views
2

Aşağıdaki örnekte, uzantı işlevi bildirilmemiş bir parametre türüne sahiptir. String. Ha? Bu nasıl bildirilmemiş tipte? Bu bir uzantısıdır çünkü vardır ColumnType (içindeDize bildirilmemiş bir türüdür?

import UIKit 

enum ColumnType: String { 
    case StringArray 
    , IntArray 
    , DoubleArray 
    , String = "text" 
    , Int = "int" 
    , Double = "double" 
    , Unknown 
} 

extension ColumnType { 
    func fromRaw(rawValue: String) -> ColumnType { 
     if let valueType = ColumnType(rawValue: rawValue) { 
      return valueType 
     } 

     switch rawValue { 
     case "text", "Text": 
      return .String 
     case "int", "Int": 
      return .Int 
     case "double", "Double": 
      return .Double 
     default: 
      return .Unknown 
     } 
    } 
} 
+0

meşru soru üzerine aşağı oy Alternatif –

cevap

3

, StringColumnType.String değil Swift.String olduğunu. Çok böyle stdlib türlerini yeniden tanımlanması karşı öneriyoruz, ancak Gerekirse, sen Swift başvurabilirsiniz ? Swift paketini kullanarak yazın:. ad çarpışmayı önlemek için

func fromRaw(rawValue: Swift.String) -> ColumnType { 
+1

, başka bir şey için 'ColumnType.String' adlandırabilirsiniz Neden – Macondo2Seattle

+0

Ah, bu mantıklı teşekkürler Rob. . –

İlgili konular