首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

iOS,Swift:如何保存包含自定义对象的数组,以便加载以供重用?

在iOS中,可以使用归档(Archiving)来保存包含自定义对象的数组,以便加载和重用。归档是一种将对象转换为二进制数据的过程,可以将对象保存到文件中或者存储在内存中。

下面是一种保存包含自定义对象的数组的方法:

  1. 首先,确保自定义对象遵循NSCoding协议。NSCoding协议定义了两个方法:encode(with:)init(coder:),用于将对象编码为二进制数据和从二进制数据解码为对象。
代码语言:swift
复制
class CustomObject: NSObject, NSCoding {
    var name: String
    
    init(name: String) {
        self.name = name
    }
    
    func encode(with coder: NSCoder) {
        coder.encode(name, forKey: "name")
    }
    
    required init?(coder: NSCoder) {
        name = coder.decodeObject(forKey: "name") as? String ?? ""
    }
}
  1. 创建一个包含自定义对象的数组。
代码语言:swift
复制
let object1 = CustomObject(name: "Object 1")
let object2 = CustomObject(name: "Object 2")
let object3 = CustomObject(name: "Object 3")

let array = [object1, object2, object3]
  1. 使用NSKeyedArchiver将数组归档为二进制数据,并将其保存到文件中。
代码语言:swift
复制
let fileURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first?.appendingPathComponent("data.archive")

do {
    let data = try NSKeyedArchiver.archivedData(withRootObject: array, requiringSecureCoding: false)
    try data.write(to: fileURL)
} catch {
    print("Failed to save data: \(error)")
}
  1. 加载保存的数据并解档为数组。
代码语言:swift
复制
var loadedArray: [CustomObject] = []

do {
    let loadedData = try Data(contentsOf: fileURL)
    if let array = try NSKeyedUnarchiver.unarchiveTopLevelObjectWithData(loadedData) as? [CustomObject] {
        loadedArray = array
    }
} catch {
    print("Failed to load data: \(error)")
}

现在,你可以使用loadedArray数组中的对象进行重用。

这里推荐使用腾讯云的对象存储服务 COS(Cloud Object Storage),它提供了高可靠性、低成本的对象存储解决方案,适用于存储和管理任意类型的文件和媒体数据。你可以将归档的数据上传到COS中进行长期保存和备份。

腾讯云COS产品介绍链接地址:https://cloud.tencent.com/product/cos

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券