2016-05-09 3 views
3

Я пытаюсь выполнить функцию внутри перечисления, но при выполнении этого кода ContentType.SaveContent("News") я продолжаю получать следующую ошибку: Use of instance member on type 'ContentType'; did you mean to use a value of type 'ContentType' instead?. Почему это не работает, когда я устанавливаю тип в String?выполнить функцию внутри enum

enum ContentType: String { 

    case News = "News" 
    case Card = "CardStack" 

    func SaveContent(type: String) { 
     switch type { 
     case ContentType.News.rawValue: 
      print("news") 
     case ContentType.Card.rawValue: 
      print("card") 
     default: 
      break 
     } 
    } 

} 

ответ

0

я бы, вероятно, сделать это вместо того, что вы пытаетесь сделать: в ContentType Enum Func:

func saveContent() { 
    switch self { 
    case .News: 
     print("news") 
    case .Card: 
     print("cards") 
    } 
} 

в другой части кода, который будет использовать ваше перечисление:

func saveContentInClass(type: String) { 
    guard let contentType = ContentType(rawValue: type) else { 
     return 
    } 
    contentType.saveContent() 
} 
0

Это не static func, поэтому вы можете применить его только к экземпляру типа, а не к самому типу, который является то, что вы пытаетесь сделать. Добавить static до func.

... и просто для хорошего стиля, не дают func сек прописные буквы ...

Смежные вопросы