2015-07-17 4 views
0

Здравствуйте, у меня есть цикл for in, где элементы являются изменяемой переменной, и в этом случае «элементы» являются строкой, но есть соответствующая переменная вне цикла for in, которая имеет тот же name как строка, называемая элементами. Итак, я имею в виду, что есть сторона Var time = [some, text, words] и theres for for loop, которая вызывает STRING с именем «time», и я хотел бы знать, как преобразовать строку в цикл for in в какую-то переменную, как снятие «s» (не так просто, как я знаю), не говоря уже «время» (переменная), а вместо этого преобразуя строку «элементы» (которая является строкой «время») в переменную. Надеюсь, я был достаточно ясен, если бы не понял. Я попробую еще раз.Поверните строку в переменную

ответ

1

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

Вы можете ссылаться на свойства объекта по их именам, если класс соответствует кодированию с ключом. Например:

class X : NSObject { 
    let time = ["some", "text", "words"] 

    func readWordsFromProp(name: String) -> String { 
     guard let list = self.valueForKey(name) as? [String] else { 
      return "" 
     } 
     var result = "" 
     for word in list { 
      result += word 
     } 
     return result 
    } 
} 

let x = X() 
print(x.readWordsFromProp("time")) 

В целом, в Swift существуют более эффективные способы использования замыканий, которые не зависят от хрупкого соответствия имени. Но KVC может быть очень мощным инструментом

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