我正在try 使动画进展到某个数值.我收到错误,我不知道原因是什么.SwiftUi IOS15

参数是什么- 号码:600; 总数:1000

我正在try 将进度动画运行到1000个数字中的600

let number: String
let total: Int
let timer = Timer.publish(every: 0.1, on: .main, in: .common).autoconnect()

ProgressView(name, value: Double(number), total: Double(total))
  .onReceive(timer) { _ in
      if number < Double(total) {
         Double(number) += Double.random(in: 0...4)
         }
     }

更新: 这是我最初没有添加的代码的一部分

struct Params: Identifiable {
    let id = UUID()
    let num: String
}

extension Params {
    static func getAll() -> [Params] {
        return [
            Params(num: "650"),
            Params(num: "80"),
            Params(num: "900")
        ]
    }
}

推荐答案

你的number房产是String,而Double(total)Double.你不能将StringDouble<运算符进行比较.

您的number属性和total属性都应该声明为Double,这样您就不必不断地将它们从String转换为Double.

此外,您不能对像Double(number)这样的函数调用赋值,因此Double(number) += ...不能工作.

此外,不能为声明为let的属性赋值,例如let number: String.

此外,如果要修改onReceive正文中的属性,则需要用@State@Binding对该属性进行包装.

import SwiftUI

struct DemoView: View {
    var name: String
    var max: Double
    var total: Double
    @State var number: Double = 0
    
    var body: some View {
        VStack {
            ProgressView(name, value: number, total: total)
                .onReceive(
                    Timer.publish(
                        every: 0.1,
                        on: .main,
                        in: .common
                    ).autoconnect()
                ) { _ in
                    if number < max {
                        number += Double.random(in: 0...4)
                    }
                }
            
            Button("Reset") { number = 0 }
        }
    }
}

import PlaygroundSupport
PlaygroundPage.current.setLiveView(
    DemoView(
        name: "Test",
        max: 600,
        total: 1000
    ).padding()
)

Swift相关问答推荐

AirPods手势不发送AVAudioApp静音状态通知

如何更新Square Order?

从Firebase播放音频文件不起作用

异步/等待函数的XCTAssertThrowsError

如何将新事例添加到枚举中?

在扩展中创建通用排序函数

暂停我的 AR 会话并清除变量和锚点的功能

允许为 self 分配新的 struct 值的理由是什么?

SwiftUI 无法在实时活动中显示 SpriteView

将 Encodable 扩展添加到 Swift 嵌套枚举

从一个范围减go 多个范围

在 Vapor 4 中使用协议的通用流利查询

来自数据的 SwiftUI 图像

无法从自定义动态框架(Swift)访问类

将项目引用添加到 Swift iOS XCode 项目并调试

在 Swift 中计算两个日期之间的差异

如何从元组数组创建字典?

如何使用 swift 将 Images.xcassets 中的图像加载到 UIImage 中

使用 phimagemanager 将图像保存到自定义相册?

ld:入口点(_main)未定义.对于架构 x86_64:Xcode 9