我在SwiftUI中使用UserDefaults和Combine。
我的UserDefault.swift文件:
ERROR: object 'input' not found
fluidRow (
tabBox (
id = "plot_encam_bar", height = "450px", width = "500px",
tabPanel ("Bar Chart", plotOutput ("plot_encam_bar", height = "430px")
),
tabPanel ("Time Series", withSpinner (plotlyOutput ("plot_encam_st", height = "430px")),
radioButtons ("justif", "Justification:", inline = TRUE,
choices = list_atend (input $ date_range [1], input $ date_range [2]))
)
)
在以下类中使用此结构时,如下所示:
DataStore.swift文件:
python3 warp.py
在上面的代码中,我遇到2个错误:
(1):类“ DataStore”没有初始化程序
(2):不能将通用结构'UserDefault'用作属性
我认为Swift 5.1会有变化或折旧,但我找不到。
答案 0 :(得分:2)
使用类似这样的内容:
@propertyWrapper
struct UserDefault<T> {
let key: String
let defaultValue: T
init(key: String, defaultValue: T) {
self.key = key
self.defaultValue = defaultValue
}
var wrappedValue: T {
get {
return UserDefaults.standard.object(forKey: key) as? T ?? defaultValue
}
set {
UserDefaults.standard.set(newValue, forKey: key)
}
}
}
https://github.com/apple/swift-evolution/blob/master/proposals/0258-property-wrappers.md
答案 1 :(得分:1)
您需要将@propertyWrapper
注释添加到您的UserDefault
结构中。
@propertyWrapper
struct UserDefault<T> {
...