【发布时间】:2017-08-01 10:37:24
【问题描述】:
我正在尝试将 swift 字典 [NSNumber : NSNumber] 保存到 UserDefaults。我已经尝试将其转换为 NSDictinonary,但是当我使用 set() 函数时,应用程序仍然崩溃。
Key 是一个信标次要密钥(NSNumber)
值是 NSTimeinterval 转换为 NSNumber
崩溃:
libc++abi.dylib:以未捕获的类型异常终止 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")
}
打印出来:键类型是 LazyMapCollection, NSNumber >(_base: [46171: 1501585588.173543], _transform: (Function))
【问题讨论】:
-
分享一些你尝试过的代码。
-
异常原因是什么?
-
@vadian 异常原因就在源代码上方的 O.P. 的原始问题中。
-
我认为最终的问题是因为键或值都 不是 O.P. 认为的类型。尝试执行类似
let recentBeaconKeys = recentBeacons.keys ; print("keys type is \(String(describing: recentBeaconKeys.self))")" 的操作并告诉我键(或值)的真正类型。` -
@MichaelDautermann 不,这是发生异常但不包含原因的消息。
标签: swift dictionary nsuserdefaults nsnumber