我想将用户对当前语言的选择存储到UserDefaults。用户通过选择器选择他们喜欢的语言。然而,我不知道如何放置代码来更新UserDefaults。
下面是我的代码:
enum Language: Int, CaseIterable, Identifiable {
case en
case zh_hant
var description: String {
switch self {
case.en:
return "English"
case.zh_hant:
return "繁體中文"
}
}
var id: Int {
self.rawValue
}
}
然后在我的模型课上:
final class ModelData: ObservableObject {
// this is to be used as the default when the app is first launch.
// However, if the user choose the language, the default should be retrieve from UserDefaults
@Published var currentLanguage: Language = Language.en
}
和选择语言的用户界面:
struct ConfigurationView: View {
@EnvironmentObject var modelData: ModelData
let lang_title = ["Language", "語言"]
var body: some View {
List {
VStack {
HStack {
Text(lang_title[modelData.currentLanguage.rawValue]).font(.title2)
Spacer()
}
Picker("Language", selection: $modelData.currentLanguage) {
ForEach(Language.allCases, id: \.id) { language in
Text(language.description).tag(language)
}
}
.pickerStyle(SegmentedPickerStyle())
}
.padding()
}
}
}
我如何从UserDefaults加载所选语言并更新用户?
您需要用相同的值重新设置它
这里有一个可能的方法(存储/还原的值可以根据需要选择)
Picker("Language", selection: $modelData.currentLanguage) {
ForEach(Language.allCases, id: \.id) { language in
Text(language.description).tag(language)
}
}
.pickerStyle(SegmentedPickerStyle())
.onChange(of: modelData.currentLanguage) {
UserDefaults.standard.setValue($0.rawValue, forKey: "language")
}
和创建(或在init
中(如果需要一些解码))
final class ModelData: ObservableObject {
@Published var currentLanguage = Language(rawValue: UserDefaults.standard.value(forKey: "language") as? Int ?? 0)!
}
另外,您可以在ConfigurationView
视图中考虑AppStorage
属性包装。
问题内容: 我已经看过所有类似的线程,阅读了文档,并尝试了许多组合来将空值存储在db中,并且每次都失败。 我正在使用MySQL。 我定义了一个字段。我从csv文件填充db,并且某些单元格没有值。Django文档说: 由于我正在与我一起工作,因此我希望将一个空字符串(csv中的一个空单元格)存储在db中。因此,我(认为)必须添加到该字段中。实际上,我已经尝试了更多: 每次我向数据库插入一个空字符串时
现在针对ABC键的值应该是复杂对象的列表。但当我真的得到“学校::abc” 我用奇怪的字符得到的值如下: \xac\xed\x00\x05SR\x00\x13java.util.arraylistx\x81\xD2\x1D\x99\xC7A\x9D\x03\x00\x01I\x00\x04Sizexp\x00\x00\x00\x01W\x04\x00\x00\x00\x01SR\x00(com.e
问题内容: 在我的应用程序中,我得到了带有描述性预定义标签的“文章”(类似于帖子/推文/文章):即“困难”,“简单”,“红色”,“蓝色”,“业务”等 这些可用标签存储在一个表中,称为包含所有可用标签的“标签”。 每篇文章都可以使用多个标签进行标记,这些标签可以通过自定义管理界面进行编辑。 可能很容易将每个实体的标签捆绑到每个标签ID的字符串化数组中,并将其与文章记录一起存储在我的“文章”表中: 尽
这是我的JSON文件,我需要从key:value pair中获取值,然后将这些值存储到ArrayList rating中进行排序,但使用这段代码,我只得到“reviews”作为键...你能帮我吗?我知道要得到所有的关键:值对,但我只需要一对,并从中取值。我应该为每个人使用迭代器吗?你能给我一些方向和例子吗
我正试图从本地Spark集群将Spark DataFrame存储为Azure Blob存储中的CSV 首先,我用Azure Account/Account键设置配置(我不确定什么是正确的配置,所以我已经设置了所有这些) 似乎这个问题已经在数据库论坛上报告了!! 在Azure Blob上存储DataFrame的正确方法是什么?
我需要只使用%RAX、%RBX、%RCX、%RDX、%RSI和%RDI(还有%RSP和%RBP)编写像素化汇编代码 GCC编写的程序集代码: 已将%dl更改为%rdx: