iOS Swift:保存自定义类的数组

swiftIOS

1个回答

写回答

Liyuannuo

2025-07-10 02:28

+ 关注

Swift
Swift

使用 Swift 开发 IOS 应用程序时,我们经常需要保存自定义类的数组。这种情况下,我们需要找到一种方法来将这些自定义对象保存到数组中,并且能够在需要时读取和使用它们。本文将介绍一种简单而有效的方法来实现这一目标。

保存自定义类的数组的方法

要保存自定义类的数组,我们可以借助 Swift 中的 Codable 协议。Codable 协议是 Swift 4 中引入的一个协议,它可以将自定义的数据类型编码为 JSON 或者其他格式,以便于存储和传输。通过遵守 Codable 协议,我们可以方便地将自定义类的实例转换为可存储的数据,并将其保存到数组中。

下面是一个简单的示例,演示了如何保存自定义类的数组:

Swift

class Person: Codable {

var name: String

var age: Int

init(name: String, age: Int) {

self.name = name

self.age = age

}

}

// 创建自定义类的实例

let person1 = Person(name: "John", age: 25)

let person2 = Person(name: "Sarah", age: 30)

let person3 = Person(name: "Mike", age: 35)

// 将实例保存到数组中

var persons = [person1, person2, person3]

// 将数组编码为 JSON 数据

let JSonEncoder = JSONEncoder()

if let JSonData = try? JSonEncoder.encode(persons) {

// 将 JSON 数据保存到文件中

if let JSonString = String(data: JSonData, encoding: .utf8) {

// 将 JSonString 保存到文件或者其他地方

print(JSonString)

}

}

在上面的示例中,我们创建了一个名为 Person 的自定义类,该类遵守了 Codable 协议。然后,我们创建了几个 Person 类的实例,并将它们保存到一个名为 persons 的数组中。

接下来,我们使用 JSONEncoder 将数组编码为 JSON 数据。通过将 JSON 数据转换为字符串,我们可以将其保存到文件或者其他地方以供以后使用。

读取保存的自定义类数组

当我们需要读取保存的自定义类数组时,我们可以使用 JSONDecoder 解码 JSON 数据并还原为原始的自定义类实例。下面是一个简单的示例:

Swift

// 假设 JSon 是保存的 JSON 数据

let JSonString = """

[

{

"name": "John",

"age": 25

},

{

"name": "Sarah",

"age": 30

},

{

"name": "Mike",

"age": 35

}

]

"""

// 将 JSON 字符串转换为 JSON 数据

if let JSonData = JSonString.data(using: .utf8) {

let JSonDecoder = JSONDecoder()

if let decodedPersons = try? JSonDecoder.decode([Person].self, from: JSonData) {

// 使用还原的自定义类数组

for person in decodedPersons {

print(person.name)

print(person.age)

}

}

}

上面的示例中,我们假设 JSonString 是保存的 JSON 数据。我们将 JSON 字符串转换为 JSON 数据,并使用 JSONDecoder 将数据解码为 Person 类型的数组。然后,我们可以遍历数组并访问每个还原的 Person 对象的属性。

在本文中,我们介绍了一种保存自定义类的数组的方法。通过遵守 Codable 协议,我们可以方便地将自定义类的实例转换为可存储的数据,并将其保存到数组中。使用 JSONEncoder 和 JSONDecoder,我们可以将数组编码为 JSON 数据并解码为原始的自定义类实例。这种方法简单而有效,可以帮助我们在 IOS 开发中保存和读取自定义类的数组。

举报有用(4分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号