如何将 UIView 存储在 CoreData 或 UserDefaults 中
How to store UIView in CoreData or UserDefaults
在我的例子中,我有一个 ViewController 客户端必须创建一个 UILabel
,我想存储 UILabel
,当我使用 UserDefaults
它 returns nil
:
extension UserDefaults {
func setLabel(label:[UILabel],forKey key: String){
let viewData: NSData?
viewData = NSKeyedArchiver.archivedData(withRootObject: label) as NSData?
set(viewData, forKey: key)
}
func labelForKey(key: String) -> [UILabel]? {
var view: [UILabel]?
if let viewData = data(forKey: key) {
view = NSKeyedUnarchiver.unarchiveObject(with: viewData) as? [UILabel]
}
return view
}
}
至于UserDefaults
,您不能在UserDefaults
中存储自定义对象,只能在NSData
、NSString
、NSNumber
、NSDate
、NSArray
或 NSDictionary
(或 Swift 中的类似类型),请参阅文档。
不存储 UI class - 仅存储您最近要恢复的参数。
在我的例子中,我有一个 ViewController 客户端必须创建一个 UILabel
,我想存储 UILabel
,当我使用 UserDefaults
它 returns nil
:
extension UserDefaults {
func setLabel(label:[UILabel],forKey key: String){
let viewData: NSData?
viewData = NSKeyedArchiver.archivedData(withRootObject: label) as NSData?
set(viewData, forKey: key)
}
func labelForKey(key: String) -> [UILabel]? {
var view: [UILabel]?
if let viewData = data(forKey: key) {
view = NSKeyedUnarchiver.unarchiveObject(with: viewData) as? [UILabel]
}
return view
}
}
至于UserDefaults
,您不能在UserDefaults
中存储自定义对象,只能在NSData
、NSString
、NSNumber
、NSDate
、NSArray
或 NSDictionary
(或 Swift 中的类似类型),请参阅文档。
不存储 UI class - 仅存储您最近要恢复的参数。