ios - 在核心数据中如何保存字典或数组,如字符串数据?
问题描述
目标:
将已关注用户的uid存储在核心数据中
给定我的用例,如何存储这些 uid?
UIDS = 字符串
想法:
- 创建一个数组或字典
- 为每个 uid 创建一个新属性
解决方案
据我了解,您想在设备的内存中存储一些值(uid)的数组。在我看来,这里有几个简单的解决方法。
- 如果您不打算存储大量数据,可以尝试使用
UserDefaults
. 然后您的代码将如下所示:
let array = ["array", "of", "some", "values"]
// Write to User Defaults
UserDefaults.standard.setValue(array, forKey: "followedIds")
// Read from it
let readArray = UserDefaults.standard.value(forKey: "followedIds") as! [String]
- 如果您要存储大量值,那么使用核心数据是有意义的。您可以将值存储为
String
或Data
。
在第一种情况下,您可以将数组转换为String
这样的:
let array = ["array", "of", "some", "values"]
// Specify any separator
let separator = "%^&"
// Join an array into string with the specified separator
let string = array.joined(separator: separator)
// Store it in core data
// Split it later
let readArray = string.split(separator: separator)
在第二种情况下,您可以将其编码为 JSON 表示形式并稍后使用:
let array = ["array", "of", "some", "values"]
// Encode array into Data
var data: Data
do {
data = try JSONEncoder().encode(data)
} catch {
print(error)
}
// Store it in core data
// Decode it later
var readArray: [String]
do {
readArray = try JSONDecoder().decode([String].self, from: data)
} catch {
print(error)
}
推荐阅读
- elasticsearch - grok 模式来解析 logstash 中的日志
- typescript - 如何将具有动态属性名称的值分配给打字稿中的类
- css - 在 div 中使用 background-size 属性
- powershell - PowerShell Invoke-WebRequest 获得 403 Forbidden,但随后可以正常工作一段时间
- php - 使用 send_at 的 SendGrid API v3
- c# - 如何结合文件绝对和相对uri或路径?
- javascript - 导入 JS 文件以使其变量成为导入它们的文件的全局范围的一部分?
- android - 在某些情况下,ALTER TABLE 无法按预期工作
- java - 更改添加到堆栈的变量值而不更改堆栈?
- python - 我不断收到 TypeError:当我尝试运行我的代码时,“str”对象不能被解释为整数