【发布时间】:2015-11-22 16:21:33
【问题描述】:
到目前为止我对该主题的了解:
我了解您只能将某些数据类型存储到 NSUserDefaults 中:
NSUserDefaults 类提供了方便的方法来访问常见类型,例如
floats、doubles、integers、Booleans和URLs。默认对象必须是一个属性列表,即以下实例(或集合实例的组合):NSData、NSString、NSNumber、NSDate、NSArray 或 NSDictionary。如果要存储任何其他类型的对象,通常应该将其归档以创建 NSData 的实例。
我知道我可以做到以下几点:
var cities = [String]()
cities = NSUserDefaults.standardUserDefaults().objectForKey("cities") as! NSArray
这是允许的,因为它将我的城市字符串数组转换为 NSArray 并且 NSUserDefaults 接受此数据类型。但是,我有一个 Int 和 Array 的字典,即var addressDict = Dictionary<Int, Array<String>>()。我知道 NSUserDefaults 接受 NSDictionary、NSInteger 和 NSArray。
我想知道怎么做:
我想正确地转换我的addressDict,以便 NSUserDefaults 接受我的 addressDict。虽然,我知道 Dictionary、Array 和 Int 可以作为单独的实体转换为它的 NS 对应项,但我不知道如何作为数据类型 Dictionary<Int, Array<String>>() 完全做到这一点。有什么帮助吗?例如,我知道这是完全错误的,但类似NSDictionary<NSInteger, NSArray<String>> 之类的。
【问题讨论】:
-
您不能以
NSNumber或Int作为键存储字典
标签: ios arrays swift dictionary nsuserdefaults