在下面的示例中,我使用 @AppStorage 保存字符串:
struct ContentView: View {
@AppStorage("text") private var text = ""
var body: some View {
Button("Append text: \(text)") {
text.append("APPEND")
}
}
}
但我想保存一个字符串数组,如下所示:
@AppStorage("text") private var text = [
"APPEND",
"APPEND"
]
最佳答案
class Storage: NSObject {
static func archiveStringArray(object : [String]) -> Data {
do {
let data = try NSKeyedArchiver.archivedData(withRootObject: object, requiringSecureCoding: false)
return data
} catch {
fatalError("Can't encode data: \(error)")
}
}
static func loadStringArray(data: Data) -> [String] {
do {
guard let array = try NSKeyedUnarchiver.unarchiveTopLevelObjectWithData(data) as? [String] else {
return []
}
return array
} catch {
fatalError("loadWStringArray - Can't encode data: \(error)")
}
}}
查看 强>_
struct ContentView: View {
@State var TempTextArray: [String] = []
@AppStorage("textArray", store: UserDefaults(suiteName: "group.de.domain.MyApp")) var items: Data = Data()
var body: some View {
VStack(spacing: 30){
Button("Append text:") {
TempTextArray.append("Append")
items = Storage.archiveStringArray(object: TempTextArray)
}
Button("GET String Array"){
print(Storage.loadStringArray(data: items))
}
}
}}
关于macos - 使用@AppStorage保存字符串数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70303055/