Я пытаюсь добавить базовый метод преобразования c, используя операторы if и два pickerViews. Например, я пытаюсь преобразовать, скажем, «дюймы» в «футы» или «миллиметры», но когда я пытаюсь использовать текстовое поле в качестве входных данных при инициализации преобразования, я получаю разные ошибки, например:
Что-то вроде « не удается преобразовать тип String или Double в ожидаемый тип BinaryInteger Невозможно присвоить свойству: 'self' является неизменным
До сих пор я пробовал следующее и многое другое:
var fromInches = Measurement(value: Double(exactly: BinaryInteger(convertInput.text)), Double, unit: UnitLength.inches)
var fromInches = Measurement(value: Double(convertInput.text), Double, unit: UnitLength.inches)
Полный код (исключая ненужно):
import UIKit
class MetricImperialConvertViewController: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource {
@IBOutlet weak var convertFrom: UIPickerView!
@IBOutlet weak var convertTo: UIPickerView!
@IBOutlet weak var convertInput: UITextField!
@IBOutlet weak var convertOutput: UITextView!
var selectedFromUnit = ""
var selectedToUnit = ""
// Convert from picker tag is #1
var convertFromData = ["Inches", "Feet", "Millimeters", "Centimeters", "Meters"]
//Convert to picker tag is #2
var convertToData = ["Inches", "Feet", "Millimeters", "Centimeters", "Meters"]
...
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
if pickerView.tag == 1 {
selectedFromUnit = convertFromData[row]
} else if pickerView.tag == 2 {
selectedToUnit = convertToData[row]
}
print("Convert from: \(selectedFromUnit)\n to: \(selectedToUnit)")
// Convert inches to feet
if selectedFromUnit == "inches" && selectedToUnit == "feet" {
var fromInches = Measurement(value: Double(convertInput.text), Double, unit: UnitLength.inches)
convertOutput.text = fromInches.converted(to: UnitLength.feet)
}
}
Эта штука сводит меня с ума, я слишком новичок в коде, чтобы справляться со сверхсложностью. Пожалуйста, помогите :)