首页 > 解决方案 > 在核心数据中如何保存字典或数组,如字符串数据?

问题描述

目标:

将已关注用户的uid存储在核心数据中

给定我的用例,如何存储这些 uid?

UIDS = 字符串

想法:

标签: iosswiftxcodedictionarycore-data

解决方案


据我了解,您想在设备的内存中存储一​​些值(uid)的数组。在我看来,这里有几个简单的解决方法。

  1. 如果您不打算存储大量数据,可以尝试使用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]
  1. 如果您要存储大量值,那么使用核心数据是有意义的。您可以将值存储为StringData

在第一种情况下,您可以将数组转换为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)
}

推荐阅读