在 iOS 12 中将一组 UIColours 存档和取消存档到 NSUserDefaults?
Archive and Unarchive an array of UIColours to NSUserDefaults in iOS 12?
我还是 Swift 的新手,我正在尝试将一组 UIColours 存档和取消存档到 NSUserDefaults。我知道在 ios 12 中我需要使用 unarchivedObject(ofClass:from:)
- 但我不确定如何使用它。
我试着回答这个问题:
但我觉得我做错了什么。
这是我正在尝试的代码:
let faveColoursArray = [colour1, colour2]
private func archiveColours() -> Data {
do {
let data = try NSKeyedArchiver.archivedData(withRootObject: faveColoursArray, requiringSecureCoding: false)
return data
} catch {
fatalError("can't encode data.")
}
}
func loadColours() -> [UIColor]? {
guard let unarchivedObject = UserDefaults.standard.data(forKey: "faveColours") else {
return nil
}
do {
guard let array = try NSKeyedUnarchiver.unarchivedObject(ofClass: UIColor.self, from: unarchivedObject) else {
fatalError("Can't load colours.")
}
return array
} catch {
fatalError("Can't load colours.")
}
}
谢谢
您可以使用 unarchiveTopLevelObjectWithData(_:)
:
func loadColours() -> [UIColor]? {
guard let unarchivedObject = UserDefaults.standard.data(forKey: "faveColours") else {
return nil
}
do {
guard let array = try NSKeyedUnarchiver.unarchiveTopLevelObjectWithData(unarchivedObject) as? [UIColor] else {
fatalError("Can't load colours.")
}
return array
} catch {
fatalError("Can't load colours.")
}
}
我还是 Swift 的新手,我正在尝试将一组 UIColours 存档和取消存档到 NSUserDefaults。我知道在 ios 12 中我需要使用 unarchivedObject(ofClass:from:)
- 但我不确定如何使用它。
我试着回答这个问题:
这是我正在尝试的代码:
let faveColoursArray = [colour1, colour2]
private func archiveColours() -> Data {
do {
let data = try NSKeyedArchiver.archivedData(withRootObject: faveColoursArray, requiringSecureCoding: false)
return data
} catch {
fatalError("can't encode data.")
}
}
func loadColours() -> [UIColor]? {
guard let unarchivedObject = UserDefaults.standard.data(forKey: "faveColours") else {
return nil
}
do {
guard let array = try NSKeyedUnarchiver.unarchivedObject(ofClass: UIColor.self, from: unarchivedObject) else {
fatalError("Can't load colours.")
}
return array
} catch {
fatalError("Can't load colours.")
}
}
谢谢
您可以使用 unarchiveTopLevelObjectWithData(_:)
:
func loadColours() -> [UIColor]? {
guard let unarchivedObject = UserDefaults.standard.data(forKey: "faveColours") else {
return nil
}
do {
guard let array = try NSKeyedUnarchiver.unarchiveTopLevelObjectWithData(unarchivedObject) as? [UIColor] else {
fatalError("Can't load colours.")
}
return array
} catch {
fatalError("Can't load colours.")
}
}