Можно ли использовать метод switch для сопоставления двух строк? - PullRequest
1 голос
/ 06 февраля 2020

У меня есть 16 строк, которые пользователь может выбрать в качестве переменных от предыдущего V C до текущего V C, но пользователь должен выбрать только 2 строки . Названия переменных startingLength и endingLength. Эти переменные - две выбранные строки из 16 предыдущих V C. Я хотел бы использовать метод switch, чтобы определить, что произойдет, если определенные строки совпадают, однако я получаю эту ошибку.

Невозможно преобразовать значение типа 'String' в ожидаемый тип аргумента 'Bool'

Вот мой код.

    import UIKit

    class LengthOutputViewController: UIViewController {


        @IBOutlet weak var lengthOutputLabel: UILabel!

        //MARK: LENGTH VARS
        var startingLength = String()
        var endingLength = String()
        var lengthTextFieldValue = Double()
        var output = Double()



        override func viewDidLoad() {
            super.viewDidLoad()


        }
        override func viewDidAppear(_ animated: Bool) {

            switch startingLength || endingLength { // Error: Cannot convert value of type 'String' to expected argument type 'Bool'
            case :"Feet" || "Inches" // Error: Cannot convert value of type 'String' to expected argument type 'Bool'



            }
        }

Спасибо за вашу помощь.

Ответы [ 2 ]

1 голос
/ 06 февраля 2020

В методе переключения на основе Документация вы можете сравнить 1 переменную, но со многими значениями.

Таким образом, вы можете сравнить startingLength с "Feet" || "Inches" и endingLength с "Feet" || "Inches", но не в одном и том же корпусе переключателя.

Так что один из способов сделать это с переключателем - это передайте строковое значение, которое хранится в параметрах startLength и endLength, в функции, применяющей эффекты регистра переключателя. пример

override func viewDidAppear(_ animated: Bool) {
       self.testString(string: startingLength)
       self.testString(string: endingLength)
    }

  private func testString(string: String) {
       switch string {
           case "Feet", "Inches":
         // Do what supposed to happen
           break
           default:
              break
       }
  }
1 голос
/ 06 февраля 2020

попробуй

 override func viewDidAppear(_ animated: Bool) {

        switch (startingLength , endingLength) {
        case  ("Feet",  "Inches"):
            print("test")

        default : break
        } 
    }
...