Сохраните массив структур в UserDefaults в Swift с примерами кода

Чтобы сохранить массив структур в UserDefaults в Swift, у вас есть несколько вариантов. Вот несколько методов с примерами кода:

Метод 1: кодирование с помощью PropertyListEncoder

// Assuming you have a struct called "Person"
struct Person: Codable {
    var name: String
    var age: Int
}
// Creating an array of Person structs
let people = [Person(name: "John", age: 30), Person(name: "Jane", age: 25)]
// Encoding the array using PropertyListEncoder
let encoder = PropertyListEncoder()
if let encodedData = try? encoder.encode(people) {
    UserDefaults.standard.set(encodedData, forKey: "people")
}

Метод 2: кодирование с помощью JSONEncoder

// Assuming you have a struct called "Person"
struct Person: Codable {
    var name: String
    var age: Int
}
// Creating an array of Person structs
let people = [Person(name: "John", age: 30), Person(name: "Jane", age: 25)]
// Encoding the array using JSONEncoder
let encoder = JSONEncoder()
if let encodedData = try? encoder.encode(people) {
    UserDefaults.standard.set(encodedData, forKey: "people")
}

Метод 3: преобразование в данные с помощью NSKeyedArchiver

// Assuming you have a struct called "Person"
struct Person: Codable {
    var name: String
    var age: Int
}
// Creating an array of Person structs
let people = [Person(name: "John", age: 30), Person(name: "Jane", age: 25)]
// Converting the array to Data using NSKeyedArchiver
if let data = try? NSKeyedArchiver.archivedData(withRootObject: people, requiringSecureCoding: false) {
    UserDefaults.standard.set(data, forKey: "people")
}

Метод 4: кодирование в JSON и сохранение в виде строки

// Assuming you have a struct called "Person"
struct Person: Codable {
    var name: String
    var age: Int
}
// Creating an array of Person structs
let people = [Person(name: "John", age: 30), Person(name: "Jane", age: 25)]
// Encoding the array to JSON and saving as a String
if let jsonData = try? JSONEncoder().encode(people),
   let jsonString = String(data: jsonData, encoding: .utf8) {
    UserDefaults.standard.set(jsonString, forKey: "people")
}

Обратите внимание, что UserDefaults имеет ограничения на объем данных, которые вы можете хранить, поэтому, если ваш массив структур большой, возможно, лучше рассмотреть альтернативные варианты хранения, такие как Core Data или локальную базу данных.