2015-06-25 5 views
1

Как получить пакет для класса, который реализует протокол? Здесь я пытаюсь с self.dynamicTypeКак получить пакет для подкласса, который реализует протокол в Swift 2?

Скажите, что у меня есть список возможных цветов, который хранится в моем репо в качестве списка ключевых значений, как мне получить доступ к этому при запуске протокола в XCTest (где NSBundle.mainBundle () не работает)?

protocol Car { 
    func possibleColors() -> [String] 
} 

extension Car { 
    func possibleColors() -> [String]{ 
     let bundle = NSBundle(forClass: self.dynamicType) 
     if let path = bundle.pathForResource(unitName, ofType: "colors") { 
      let keyValueList = NSDictionary(contentsOfFile: path) { 
        return keyValueList.allKeys() as! [String] 
      } 
     } 
     return [String]() 
    } 
} 

Эта линия не работает:

let bundle = NSBundle(forClass: self.dynamicType) 

действительный подход к этому становится сверток, если это может быть сделано без получения класса, то будет ОК ответ. Просто не могу найти способ.

ответ

3

Как насчет этого?

extension Car { 
    func possibleColors() -> [String] { 
     if let selfClass = self.dynamicType as? AnyClass { 
      let bundle = NSBundle(forClass: selfClass) 
      if let path = bundle.pathForResource("test", ofType: "colors") { 
       if let keyValueList = NSDictionary(contentsOfFile: path) { 
        return keyValueList.allKeys as! [String] 
       } 
      } 
     } 

     return [String]() 
    } 
} 
Смежные вопросы