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

无法从Swift中的UserDefaults获取具有多个对象的NSMutableArray

在Swift中,UserDefaults是一种用于存储和检索用户偏好设置的机制。它主要用于存储基本数据类型,如整数、浮点数、布尔值和字符串。然而,它不支持直接存储和检索复杂的对象类型,如NSMutableArray。

要解决这个问题,可以通过将NSMutableArray转换为NSData,并将其存储为UserDefaults中的Data类型来实现。下面是一个示例代码:

代码语言:txt
复制
// 存储NSMutableArray到UserDefaults
func saveArrayToUserDefaults(array: NSMutableArray, key: String) {
    let data = NSKeyedArchiver.archivedData(withRootObject: array)
    UserDefaults.standard.set(data, forKey: key)
}

// 从UserDefaults中获取NSMutableArray
func getArrayFromUserDefaults(key: String) -> NSMutableArray? {
    if let data = UserDefaults.standard.object(forKey: key) as? Data {
        return NSKeyedUnarchiver.unarchiveObject(with: data) as? NSMutableArray
    }
    return nil
}

// 示例用法
let myArray = NSMutableArray()
myArray.add("Object 1")
myArray.add("Object 2")
myArray.add("Object 3")

saveArrayToUserDefaults(array: myArray, key: "myArrayKey")

if let retrievedArray = getArrayFromUserDefaults(key: "myArrayKey") {
    print(retrievedArray)
} else {
    print("Array not found in UserDefaults")
}

在上述示例代码中,我们使用NSKeyedArchiver将NSMutableArray转换为NSData,并使用UserDefaults存储为Data类型。然后,我们使用NSKeyedUnarchiver从UserDefaults中检索Data,并将其转换回NSMutableArray。

需要注意的是,NSMutableArray中的对象必须遵循NSCoding协议,以便正确地进行归档和解档操作。如果NSMutableArray中的对象不遵循NSCoding协议,将会导致存储和检索失败。

对于腾讯云相关产品,可以使用腾讯云对象存储(COS)来存储和检索大型数据对象。腾讯云对象存储是一种高可用、高可靠、低成本的云存储服务,适用于各种场景,包括数据备份、静态网站托管、多媒体存储和分发等。您可以通过以下链接了解更多关于腾讯云对象存储的信息:

腾讯云对象存储(COS):https://cloud.tencent.com/product/cos

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

相关·内容

6分1秒

77_尚硅谷_大数据SpringMVC_从ServletContext中获取SpringIOC容器对象的方式.avi

16分8秒

人工智能新途-用路由器集群模仿神经元集群

领券