NSNumber swift Dictionary to userdefaults swift3

时间:2017-08-01 10:37:25

标签: swift dictionary nsuserdefaults nsnumber

我正在尝试将swift字典[NSNumber : NSNumber]保存到UserDefaults。我已经尝试将其强制转换为NSDictinonary,但是当我使用set()函数时应用程序崩溃了。

Key是一个信标小调(NSNumber) 值NSTimeinterval <{1}}

崩溃:

  

libc ++ abi.dylib:以未捕获的类型异常终止   NSException

NSNumber
  

打印输出:键类型为LazyMapCollection&lt;字典&lt; NSNumber,NSNumber&gt;,NSNumber&gt;(_ base:[46171:1501585588.173543],_ transnsform :( Function))

2 个答案:

答案 0 :(得分:2)

尝试以下答案。

    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)
        }
    }

答案 1 :(得分:1)

你不能保存类型[NSNumber:NSNumber]的字典,只允许[String,AnyObject]或[NSObject:AnyObject]。

作为方法,您可以将NSNumber转换为String