swift - 菜单 indexpath 快速保存 UserDefaults
问题描述
我想保存我上次在菜单中单击的任何索引路径。他现在正在记录索引路径。但如果我选择 indexpath,他正在记录它。如果我不选择,它不会。即使我没有从菜单中选择项目,如何保留以前的记录?
let save11 = UserDefaults.standard.integer(forKey: "indexPath")
let yenindex = save11
self.menuView.setSelected(index: yenindex)
let userDefaults = UserDefaults.standard
userDefaults.removeObject(forKey: "indexPath")
menuView.didSelectItemAtIndexHandler = {(indexPath: Int) -> Void in
var placesdeger: String = ""
UserDefaults.standard.setValue(indexPath, forKey: "indexPath")
if indexPath == 0 {
let userDefaults = UserDefaults.standard
userDefaults.removeObject(forKey: "indexPath")
UserDefaults.standard.setValue(indexPath, forKey: "indexPath")
placesdeger = "Yatak Odası"
}
if indexPath == 1 {
let userDefaults = UserDefaults.standard
userDefaults.removeObject(forKey: "indexPath")
UserDefaults.standard.setValue(indexPath, forKey: "indexPath")
placesdeger = "Oturma Odası"
self.refreshData()
}
解决方案
每当您单击菜单时,都会删除以前的 Userdefault 值并每次设置新的用户默认值。每次都输入此代码并获取新索引,如果未选中,则您将在 Userdefaults 中获得旧值
let userDefaults = UserDefaults.standard
userDefaults.removeObject(forKey: "index")
userDefaults.set(i, forKey: "index")
EDIT1 在您只定义一次常量的地方使用它
let userDefaults = UserDefaults.standard
如果您正在使用或我不知道的任何其他方法,但如果您获得正确的索引路径,那么此代码将起作用
menuView.didSelectItemAtIndexHandler = {(indexPath: Int) -> Void in
var placesdeger: String = ""
userDefaults.removeObject(forKey: "indexPath")
if indexPath == 0 {
let userDefaults = UserDefaults.standard
UserDefaults.standard.setValue(indexPath, forKey: "indexPath")
placesdeger = "Yatak Odası"
}
if indexPath == 1 {
UserDefaults.standard.setValue(indexPath, forKey: "indexPath")
placesdeger = "Oturma Odası"
self.refreshData()
}
推荐阅读
- sql - 如何将 Azure blob 文件导入 Sql Server 2008
- r - 无法在 Ubuntu 容器中安装 RJAVA
- c# - 作为用户使用 IReactiveDerivedList 的正确方法在
- css - 如何从 DOM 树中选择第 n 个类迭代?
- visual-studio-2017 - 如何防止 Visual Studio 2017 将日志文件添加到解决方案中?
- python - Django 如何在 GCBV 中使用 url pk 值(通用类库视图)
- c++ - 如果元组足够大,则使用 SFINAE 启用方法
- jenkins - 从詹金斯运行时,Robot-Sikuli 脚本抛出异常错误
- java - 每秒安排一次 Get Api 调用与执行订阅者 API 有什么区别?
- ios - 标注验证在给定超时范围内不成功