我收到以下错误:我的@AppStorage变量下面的No exact matches in call to initializer:
Model.swift

class UserSettings: ObservableObject {
    @AppStorage("minAge") var minAge: Float = UserDefaults.standard.float(forKey: "minAge")
该变量旨在绑定(bind)到下面的Slider值。
Settings.swift
import SwiftUI
struct Settings: View {
    let auth: UserAuth
    init(auth: UserAuth) {
        self.auth = auth
    }
    @State var minAge = UserSettings().minAge
    let settings = UserSettings()

    var body: some View {
            VStack {
                NavigationView {
                    Form {
                        Section {
                        Text("Min age")
                        Slider(value: $minAge, in: 18...99, step: 1, label: {Text("Label")})
                            .onReceive([self.minAge].publisher.first()) { (value) in
                                UserDefaults.standard.set(self.minAge, forKey: "minAge")
                            }
                        Text(String(Int(minAge)))
                        }
知道是什么问题吗?

最佳答案

您不需要中间状态和UserDefaults,因为您可以直接绑定(bind)到AppStorage值,并且默认情况下使用UserDefaults.standard。另外,您需要对Slider使用相同类型的Double
因此,这是一个最小的演示解决方案。经过Xcode 12测试。

struct Settings: View {
    @AppStorage("minAge") var minAge: Double = 18

    var body: some View {
        VStack {
            NavigationView {
                Form {
                    Section {
                        Text("Min age")
                        Slider(value: $minAge, in: 18...99, step: 1, label: {Text("Label")})
                        Text(String(Int(minAge)))
                    }
                }
            }
        }
    }
}

关于ios - @AppStorage变量上的“对初始化程序的调用没有完全匹配”错误?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/62810002/

10-12 13:46