gpt4 book ai didi

ios - 调用 awakeFromNib 时,UserDefaults 返回 0 个元素

转载 作者:行者123 更新时间:2023-11-28 18:14:46 24 4
gpt4 key购买 nike

我在 UITableViewCell 中有一个 UICollectionView 并且我正在使用 UserDefaults 将所选项目的数组保存在 didSelectItem 函数中以保持选中状态解除它们的父 View Controller 后的状态:

var arrSelectedIndex = [IndexPath]()
let encodedData = NSKeyedArchiver.archivedData(withRootObject: arrSelectedIndex)
UserDefaults.standard.set(encodedData, forKey: "arrayOfSelectedItem")
UserDefaults.standard.synchronize()

每当我显示 View Controller 时,我都会在 awakeFromNib 中再次使用 UserDefaults 设置我的数组:

arrSelectedIndex = UserDefaults.standard.array(forKey: "arrayOfSelectedItem") as? [IndexPath] ?? [IndexPath]()

但是我的数组和 UserDefaults 都返回 0 个元素(我试图打印出 arrSelectedIndex 和 UserDefaults.standard.array(forKey: "arrayOfSelectedItem") 的值 as? [IndexPath] ?? [IndexPath]() ) 并且它们都是 0,即使它们在选择项目时有数据。 awakeFromNib 是否会重置其中的所有内容?

最佳答案

问题是这一行:

UserDefaults.standard.array(forKey: "arrayOfSelectedItem") as? [IndexPath]

那会失败,因为你在那个键下保存的不是数组。这是您之前所说的:

let encodedData = NSKeyedArchiver.archivedData(withRootObject: arrSelectedIndex)
UserDefaults.standard.set(encodedData, forKey: "arrayOfSelectedItem")

你保存的是encodedData。它不是数组。它是一个数据。该数组在其中编码。

关于ios - 调用 awakeFromNib 时,UserDefaults 返回 0 个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59539519/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com