我将一组字符串(Set<String>
)存储到NSUserDefaults.standardUserDefaults()
中,并且在取回对象时,它将返回为字符串数组而不是集合。NSUserDefaults返回swift数组[String]而不是集合<String>
此块的工作,因为我重新创建数组作为NSSet中
if let products = NSUserDefaults.standardUserDefaults().objectForKey("products") as? [String] {
// recreate the array into a NSSet/Set
if let productSet = NSSet(array: products) as? Set<NSObject> {
// now it's a set
}
}
然而,它不可能直接获取对象的快捷设置:
if let products = NSUserDefaults.standardUserDefaults().objectForKey("products") as? Set<String> {
// will not cast into Set<String>
}
我认为NSUserDefaults
内部设置为数组吗?有没有办法接收作为一个集合而不是一个数组的项目?
根据文档,用户默认对象必须是实例或NSData的,的NSString,的NSNumber,NSDate的,NSArray中,或NSDictionary中的组合。你是如何存储* Set *的? –
将NSData中的任何内容和检索类型转换为最初转换后的任何内容 –
'NSUserDefaults.standardUserDefaults().setObject(Set([“a”,“b”]),forKey:“products”)'throws a运行时异常。没有看到你如何*设置*默认值是不可能给(有帮助)的答案。 –