You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Swift项目中if语句添加位置及1RM计算逻辑咨询

SwiftUI中添加条件计算1RM的实现指导

你需要把条件逻辑放在body内部、Text组件之前的局部变量定义位置,替换原来的直接公式计算。这里提供两种清晰的实现方式:

方式1:多行if-else(新手友好,逻辑直观)

直接用标准的if-else语句定义oneRepMax:

var oneRepMax: Double
if reps == 1 {
    oneRepMax = weight
} else {
    oneRepMax = weight*(1+(0.0333*reps))-2
}

方式2:三元运算符(简洁写法)

如果习惯简洁语法,也可以用三元表达式完成条件判断:

let oneRepMax = reps == 1 ? weight : weight*(1+(0.0333*reps))-2

修改后的完整ContentView代码

//
//  ContentView.swift
//  overload
//
//  Created by / on 25.08.2022.
//
 
import SwiftUI
 
struct ContentView: View {
    
    @State private var weight = 1.0
    @State private var reps = 1.0
    
    var body: some View {
        VStack{
            Stepper("Reps : \(reps.formatted())", value: $reps, in: 1...10)
            
            TextField("Weight: \(weight.formatted())kg", value: $weight, format: .number)
                    .keyboardType(.numberPad)
        
            // 替换为带条件的计算逻辑
            var oneRepMax: Double
            if reps == 1 {
                oneRepMax = weight
            } else {
                oneRepMax = weight*(1+(0.0333*reps))-2
            }
 
            Text(String(format: "Your 1RM is %.1f kg", oneRepMax)).padding()
            
            Group { 
                Text(String(format: "Your 2RM is %.1f kg", oneRepMax/(1+(0.0333*2))+2))                
                Text(String(format: "Your 3RM is %.1f kg", oneRepMax/(1+(0.0333*3))+2))
                Text(String(format: "Your 4RM is %.1f kg", oneRepMax/(1+(0.0333*4))+2))
                Text(String(format: "Your 5RM is %.1f kg", oneRepMax/(1+(0.0333*5))+2))
                Text(String(format: "Your 6RM is %.1f kg", oneRepMax/(1+(0.0333*6))+2))
                Text(String(format: "Your 7RM is %.1f kg", oneRepMax/(1+(0.0333*7))+2))
                Text(String(format: "Your 8RM is %.1f kg", oneRepMax/(1+(0.0333*8))+2))
                Text(String(format: "Your 9RM is %.1f kg", oneRepMax/(1+(0.0333*9))+2))
                Text(String(format: "Your 10RM is %.1f kg", oneRepMax/(1+(0.0333*10))+2))   
            }                
        }
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}

额外优化提示

原代码中String(format:)重复传入了两次参数,这是多余的,修改后的代码已去掉重复项,只需要传入一次对应%.1f的数值即可。

内容的提问来源于stack exchange,提问作者timoswipe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 05:54:23