当前位置: 首页 > 面试题库 >

如何在NSUserdefaults中快速保存和读取数组的数组?

葛雪松
2023-03-14
问题内容

我需要创建一个数组来添加具有这种格式的对象,例如Swift中的字典:[“ key1”:“ value1”,“ key2”:“ value2”]

当我尝试NSUserDefaults全部保存时是正确的,但是NSUserDefaults使用键读取时会崩溃。var obj需要什么类型的数据?

let def = NSUserDefaults.standardUserDefaults()
var key = "keySave"
var element: AnyObject!

var array1: [AnyObject!] = []
array1.append(["key1": "val1", "key2": "val2"])
array1.append(["key1": "val1", "key2": "val2"])

//save
var savestring : [AnyObject!]
savestring = array1
var defaults = NSUserDefaults.standardUserDefaults()
defaults.setObject(savestring, forKey: key)
defaults.synchronize()

//read
var obj: [AnyObject!] = []
if(obj != nil){
    print("size: ")
    print(obj.count) //vary long value confused..
    element = obj[0]  //crash
    print(element.objectForKey("key1"))
}

问题答案:

这个问题的意思是“数组数组”,但是我想大多数人可能只是想知道如何将数组保存到UserDefaults。对于那些人,我将添加一些常见示例。

保存数组

let array = ["horse", "cow", "camel", "sheep", "goat"]

let defaults = UserDefaults.standard
defaults.set(array, forKey: "SavedStringArray")

检索数组

let defaults = UserDefaults.standard
let myarray = defaults.stringArray(forKey: "SavedStringArray") ?? [String]()

整数数组

保存数组

let array = [15, 33, 36, 723, 77, 4]

let defaults = UserDefaults.standard
defaults.set(array, forKey: "SavedIntArray")

检索数组

let defaults = UserDefaults.standard
let array = defaults.array(forKey: "SavedIntArray")  as? [Int] ?? [Int]()

布尔数组

保存数组

let array = [true, true, false, true, false]

let defaults = UserDefaults.standard
defaults.set(array, forKey: "SavedBoolArray")

检索数组

let defaults = UserDefaults.standard
let array = defaults.array(forKey: "SavedBoolArray")  as? [Bool] ?? [Bool]()

日期数组

保存数组

let array = [Date(), Date(), Date(), Date()]

let defaults = UserDefaults.standard
defaults.set(array, forKey: "SavedDateArray")

检索数组

let defaults = UserDefaults.standard
let array = defaults.array(forKey: "SavedDateArray")  as? [Date] ?? [Date]()

对象数组

自定义对象(以及对象的数组)需要做更多的工作才能保存到UserDefaults。请参阅以下链接以了解操作方法。

  • 用于将颜色保存为UserDefaults的文档

笔记

  • 使用nil合并运算符??),您可以返回保存的数组或空数组而不会崩溃。这意味着如果对象返回nil,则将??使用运算符后的值代替。
  • 正如你所看到的,基本设置是为同一个IntBoolDate。我也用进行了测试Double。据我所知,可以保存在属性列表中的任何内容都将像这样工作。


 类似资料:
  • 问题内容: 这是我定义的一个类: 这就是我尝试保存s 数组的方式: 它没有用,这是我在控制台上看到的: 我是iOS新手,您能帮我吗? 第二版 我找到了一种保存数据的解决方案: 但是在使用以下代码加载数据时出现错误: 错误是: 我很确定我存档了Double,保存/加载过程存在问题 有什么线索吗? 问题答案: 从属性列表编程指南中: 如果属性列表对象是容器(即数组或字典),则其中包含的所有对象也必须是

  • 我需要在文件中存储包含80000项的布尔数组。我不在乎节省多少时间,我只关心数组的加载时间。我没有尝试通过DataOutputStream存储它,因为它需要访问每个值。 我试图通过3种方法来做到这一点,例如: < li >序列化布尔数组 < li >使用BitSet代替布尔数组并将其序列化 < li >将布尔数组转换为字节数组,其中1为真,0为假,并使用ByteBuffer通过FileChanne

  • 本文向大家介绍Numpy数组的保存与读取方法,包括了Numpy数组的保存与读取方法的使用技巧和注意事项,需要的朋友参考一下 1. 数组以二进制格式保存 np.save和np.load是读写磁盘数组数据的两个主要函数。默认情况下,数组以未压缩的原始二进制格式保存在扩展名为npy的文件中,以数组a为例 利用这种方法,保存文件的后缀名字一定会被置为.npy 2. 存取文本文件 使用 np.savetxt

  • 问题内容: 我试图存储一个数组,并在需要时填充该数组。 目前,我正在使用: 但是我明白了 致命错误:解开Optional值时意外发现 尝试加载数据时。我不确定问题出在存储或检索中。以前有没有人经历过? 问题答案: 从您的代码中,我看到您正在存储一些数组 并检索一个字符串 类型可能不匹配,您可以存储一种类型并检索另一种类型。 检索使用或查看下面的代码。 要么 如果是数组,我会选择第一个。

  • 本文向大家介绍php读取csv数据保存到数组的方法,包括了php读取csv数据保存到数组的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了php读取csv数据保存到数组的方法。分享给大家供大家参考。具体分析如下: csv是常用的excel格式的替代品,很多时候我们导出数据是都会导成csv格式的,这样和excel没什么区别,下面的程序是要读取csv数据保存到数组我们要对数据进行操作,所以

  • 问题内容: 通过从继承可以很容易地将Realm与类一起使用。但是我如何将包含几个字段的a保存到Swift中呢?例如 我知道文档中明确支持的类型。但是也许有一个不错的解决方法,或者甚至更好-来自领域的人可以写有关结构的未来计划。 问题答案: 我建议您使用协议,以实现所需的功能。 1)创建您的结构 2)创建您的领域对象 3)使用协议将我们的结构转换为Realm对象 4)使您的结构持久 有了这些工具,我