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

在Swift for macOS(Xcode13)中基于两个TextField输入计算Volume Divided的实现方法

界面示例

完整实现代码

原始代码存在参数传递错误、缺少状态变量声明、函数调用不符合Swift语法规范的问题,以下是适配macOS + Xcode 13的可直接运行的SwiftUI实现:

import SwiftUI

struct VolumeCalcView: View {
    // 绑定两个输入框的数值
    @State private var radicalmassscale: Double = 1.0
    @State private var radicalvolscale: Double = 1.0
    // 数字输入格式化器,避免非法输入和分母为0
    private let formatter: NumberFormatter = {
        let fmt = NumberFormatter()
        fmt.numberStyle = .decimal
        fmt.minimum = 0.0001
        return fmt
    }()
    
    // 第一级计算逻辑
    private var cubemassatomscale: Double {
        (((2 / cbrt(2)) + radicalmassscale) - 1) + radicalmassscale
    }
    
    // 最终Volume Divided计算逻辑
    private var volScaleResult: Double {
        cubemassatomscale / radicalvolscale
    }
    
    var body: some View {
        VStack(spacing: 14) {
            Text("Volume + Sigcothian:")
                .font(.callout)
                .bold()
            
            TextField("#", value: $radicalmassscale, formatter: formatter)
                .textFieldStyle(RoundedBorderTextFieldStyle())
                .overlay(
                    RoundedRectangle(cornerRadius: 6)
                        .stroke(Color.blue, lineWidth: 2)
                )
            
            TextField("#", value: $radicalvolscale, formatter: formatter)
                .textFieldStyle(RoundedBorderTextFieldStyle())
                .overlay(
                    RoundedRectangle(cornerRadius: 6)
                        .stroke(Color.blue, lineWidth: 2)
                )
            
            Text("Volume Divided: \(volScaleResult, specifier: "%.4f")")
                .font(.callout)
                .bold()
                .frame(width: 200, height: 60, alignment: .leading)
        }
        .padding()
        Divider()
    }
}

改动说明

  • 新增@State修饰的变量绑定两个输入框的数值,输入变更时会自动触发结果重算和UI刷新
  • 将原有的两个函数改为计算属性,无需手动传参即可读取最新的输入值计算
  • 新增数字格式化器限制输入规则,同时设置输入最小值避免分母为0触发崩溃
  • 结果显示新增小数位控制,可调整specifier的参数自定义保留的小数位数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 09:27:01