Возникли проблемы с вводом из textField значения преобразования измерения, возникают различные ошибки - PullRequest
0 голосов
/ 01 августа 2020

Я пытаюсь добавить базовый метод преобразования 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)
            
        }
        
    }

Эта штука сводит меня с ума, я слишком новичок в коде, чтобы справляться со сверхсложностью. Пожалуйста, помогите :)

1 Ответ

0 голосов
/ 02 августа 2020
• 1000 в заявлении отсутствовала первая буква заглавной буквы ...;)
    func convert() {
    // Convert inches to feet
    if selectedFromUnit == "Inches" && selectedToUnit == "Feet" {
        let value = Double(convertInput.text!)!
        let fromInches = Measurement(value: value, unit: UnitLength.inches)
        let result = fromInches.converted(to: UnitLength.feet)
        print("\(result)")
    } else {
        print("nil")
        print("\(selectedFromUnit) to \(selectedToUnit)")
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...