在核心数据中如何保存字典或数组,如字符串数据? [关闭]
Posted
技术标签:
【中文标题】在核心数据中如何保存字典或数组,如字符串数据? [关闭]【英文标题】:How to save dictionary or array like String data when in Core data? [closed] 【发布时间】:2020-12-06 22:32:17 【问题描述】:目标:
将已关注用户的uid存储在核心数据中
如何根据我的用例存储这些 uid?
UIDS = 字符串
想法:
创建一个数组或字典 为每个 uid 创建一个新属性【问题讨论】:
您已经在 12 小时前驳回了相同的主题。你为什么要重复它? @ElTomato 的细微差别总是有用的,我的朋友。因注意力不集中而被否决。我将其删除并重新发布以纠正错误。 (关闭原因) 您的主题没有意义。标题首先建议您要保存一个目录。然后,您正在谈论保存 UID。那么你在节省什么? @ElTomato dict 或 arr。保存此类数据的方法很多。哪个最有意义。也许这比最优更模棱两可。但肯定不足以关闭。 【参考方案1】:据我了解,您希望在设备内存中存储一些值(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)
【讨论】:
我认为“很多”是数百个字符串,因此使用 opt 2以上是关于在核心数据中如何保存字典或数组,如字符串数据? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章