我收到以下错误:我的@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/