我正在尝试将 swift 字典 [NSNumber : NSNumber]
保存到 UserDefaults。我已经尝试将其转换为 NSDictinonary,但是当我使用 set() 函数时应用程序仍然崩溃。
Key 是一个 beacon minor key (NSNumber)
值是 NSTimeinterval
转换为 NSNumber
崩溃:
libc++abi.dylib: terminating with uncaught exception of type NSException
var recentBeacons: [NSNumber : NSNumber] = [:]
func saveRecentBeaconDict()
{
let recentBeaconKeys = recentBeacons.keys
print("keys type is \(String(describing: recentBeaconKeys.self))")
let recentBeaconsNSDict = recentBeacons as NSDictionary
UserDefaults.standard.set(recentBeaconsNSDict, forKey:"recentBeacons")
}
prints out: keys type is LazyMapCollection< Dictionary < NSNumber, NSNumber >, NSNumber >(_base: [46171: 1501585588.173543], _transform: (Function))
最佳答案
尝试以下答案。
var recentBeacons: [NSNumber : NSNumber] = [:]
func saveRecentBeaconDict()
{
let archivedObject = NSKeyedArchiver.archivedData(withRootObject: recentBeacons as NSDictionary)
UserDefaults.standard.set(archivedObject, forKey: "recentBeacons")
let data = UserDefaults.standard.object(forKey: "recentBeacons") as? Data
if let _data = data {
let allData = NSKeyedUnarchiver.unarchiveObject(with: _data) as! NSDictionary
print(allData)
}
}
关于swift - NSNumber swift 字典到 userdefaults swift3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45435537/