我试图用@AppStorage来读取/保存一个值,并用它计算一些东西,但我无法调用ContentView中的函数.例子:

Helper.swift

func powerized(x: Decimal) -> Decimal {
    let powerized: Decimal  = pow(x, 3) * 6.25
    return powerized
}

ContentView.swift

import SwiftUI

struct ContentView: View {
  @AppStorage(StorageKeys.sourcePower.rawValue) var sourcePower = 15

  var body: some View {
     VStack {
         Text(powerized(x: sourcePower))
     }
   }
}

通过这个实现,我得到了Initializer 'init(_:)' requires that 'Decimal' conform to 'StringProtocol'.

如果我放一个

var myValue: Decimal = powerized(x: sourcePower)
Text(myValue)

我得到一个转换错误Cannot convert value of type 'Int' to expected argument type 'Decimal'.这可能是因为变量没有定义为Decimal,但即使做了改变,我也会得到

我对这件事很生气.在不创建一个有ObservableObject个新类的情况下,是否有任何更改使其工作?AppStorage已经解决了每次更改时更新UI的问题.

推荐答案

这与@AppSt或age无关.powerized函数返回一个十进制数,而您试图使用的是Text().Text()需要String.你可以这样做:

  var body: some View {
     VStack {
         // String interpolation
         Text("\(powerized(x: sourcePower))")
     }
   }

  var body: some View {
     VStack {
         // Use .description which returns a String
         Text(powerized(x: sourcePower).description)
     }
   }

这两个都是String分.

Ios相关问答推荐

阿拉伯文变音符号(Harakat)在文本对齐的UILabel中未对齐

XcodeCloud生成失败,返回";ci_pre_xcodeBuild.sh是可执行文件,但退出时返回2个退出代码.";

OnTapGesture在其修改的视图外部触发

SwiftUI-工作表不显示导航标题

当虚拟对象附加到其网格时,如何刷新创建 ARView 的 SwiftUI UIViewRepresentable?

如何在 Flutter 应用程序中测试来自 App/Play Store 的移动深层链接?

如何在SwiftUI中实现淡入淡出加粘标题屏幕效果

小部件链接有效,但不执行任何操作

如何使用 AppIntents 在 SwiftUI 应用程序中打开特定视图

有没有办法访问自动生成的 Codable 一致性的编码键?

SwiftUI 选项卡式视图防止滑动到下一个选项卡

UIViewControllerRepresentable 在 Xcode 14 iOS 16 上崩溃

Xcode 14 需要为 Pod Bundles Select 开发团队

我可以使用同一个 Firebase 应用将多个 Flutter 应用添加到一个 Firebase 数据库吗?

通过 tuist/XcodeProj 以编程方式将文件添加到本机目标

何时需要将应用程序源包含在测试目标中?

Xcode 4.1 致命错误:自构建预编译头文件后修改了 stdlib

@IBDesignable 崩溃代理

Swift 将 unix 时间转换为日期和时间

判断从 JSON 字符串返回的 Objective-C 中的空值