Использование пользовательского ввода в SwiftUi для выполнения расчетов - PullRequest
1 голос
/ 11 октября 2019

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

struct PlanetDetail: View {
    let planet : Planet
    @State var weight = ""


    var body: some View {

        VStack {
            Text(planet.name)
            Text("Gravity on mercury is\(planet.gravity)")
            TextField( "Enter your weight", text:$weight)
            Text("your weight on \(planet.name) is ")
        }


    }
}

1 Ответ

1 голос
/ 11 октября 2019

Вы указали свою переменную веса следующим образом:

@State var weight = ""

Присвоив пустую строку (""), вы объявили вес в виде строки.

Чтобы умножить это значение на целое число, вам необходимо преобразовать строковое значение в целое число.

Вам также потребуется обработать случай, когда пользователь может вводить нечисловые значения в ваш текстinput.

Вместо этого сохраните значение веса в виде целого числа.

Вы можете позаботиться об этом, создав привязку, которая используется, когда пользователь вводит значение в текстовое поле. Например:

 @State var weight = 0

    var body: some View {
        let weightProxy = Binding<String>(
            get: { String(format: "%.02f", Int(self.weight)) },
            set: {
                if let value = NumberFormatter().number(from: $0) {
                    self.weight = value.intValue
                }
            }
        )

Затем вы привязали бы свой TextField к weightProxy:

TextField( "Enter your weight", text:$weightProxy)

В лучшем случае будет иметь TextField, который принимает только числа. Это немного больше работы, но может быть хорошим проектом для следующего!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...