- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我会尽力解释我遇到的问题:我有一个带有两个 View Controller 的待办事项列表,您将在下面的代码中看到一些用于调试的打印,我添加了一个“删除”(删除 userdefault)并检查(检查存储在 userDefaults 中的内容)以进行调试
我首先使用 Erase 清除我的 userDefaults,可以看到值为“nil”。然后我将一个项目添加到我的列表中,例如汽车,它工作正常。然后我添加第二个项目,比如 apple,有时它可以工作,但 90% 的时间它只是替换 car 而不是添加到数组中;我可以通过复选按钮看到这一点。
所以我遇到了我的第一个问题,其中 if 循环仅用打印函数替换了先前的值,但我可以看到它是循环执行的第一部分,因为我可以在控制台中看到“first”,所以它应该添加到数组中???
多次从“清”;将前两项添加到我的列表中是可行的,但是从第二项开始,if 函数总是用新的替换最后一项;保留以前的。
如果我清除我的数据并为我的 UserDefaults 值获取一个 nil 值,我仍然可以看到循环的第一部分正在执行而不是其他部分
有时我重新启动 IOS 模拟器并得到一个不知从哪里存储的值
现在我认为“toDo”标识符存在一个错误,并将所有 ID 更改为“list”并且只有 else 循环正在执行!!!
我不明白为什么我的代码这么乱。我希望我说得够清楚;感谢阅读
下面是我的代码(两个 View Controller ;一个用于添加项目,另一个用于 tableView)
第一个 View Controller
var toDoStorage = UserDefaults.standard.object(forKey: "toDo")
var toDoList = [String] ()
@IBOutlet weak var itemLabel: UITextField!
@IBOutlet weak var reportLabel: UILabel!
@IBAction func checkButton(_ sender: Any) {
print(UserDefaults.standard.stringArray(forKey: "toDo") as Any)
}
@IBAction func eraseButton(_ sender: Any) {
let eraseDate = ""
UserDefaults.standard.set(eraseDate, forKey: "toDo")
print(UserDefaults.standard.stringArray(forKey: "toDo") as Any)
}
@IBAction func saveButton(_ sender: Any) {
if let tempArray = toDoStorage as? [String]{
toDoList = tempArray
print("first")
toDoList.append(itemLabel.text!)
} else {
toDoList = [itemLabel.text!]
print("else")
}
UserDefaults.standard.set(toDoList, forKey: "toDo")
itemLabel.text = ""
}
第二个
@IBOutlet weak var table: UITableView!
var toDo = UserDefaults.standard.stringArray(forKey: "toDo") ?? [String]()
public func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int{
return toDo.count
}
public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = UITableViewCell(style: UITableViewCellStyle.default, reuseIdentifier: "IDCell")
cell.textLabel?.text = String(describing: toDo[indexPath.row])
return cell
}
func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
if editingStyle == UITableViewCellEditingStyle.delete {
toDo.remove(at: indexPath.row)
table.reloadData()
UserDefaults.standard.set(toDo, forKey: "toDo")
}
}
override func viewDidAppear(_ animated: Bool) {
let dataCheck = UserDefaults.standard.object(forKey: "toDo")
if let newData = dataCheck as? [String] {
toDo = newData
table.reloadData()
}
回答如下(在我的新项目中将 toDo 替换为列表)
@IBAction func saveButton(_ sender: Any) {
if UserDefaults.standard.object(forKey: "list") as? [String] != nil {
toDoList = UserDefaults.standard.stringArray(forKey: "list")!
toDoList.append(itemLabel.text!)
} else {
toDoList = [itemLabel.text!]
}
UserDefaults.standard.set(toDoList, forKey: "list")
itemLabel.text = String()
toDoList = [String] ()
最佳答案
toDo
键的值是一个字符串数组。清除 func eraseButton
中的数组替换
let eraseDate = ""
与
let eraseDate = [String]()
关于ios - UserDefaults 和 If/else 不稳定的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45799455/
首先让我说,我知道这是一个相当普遍的话题,但在搜索它时,我找不到另一个可以澄清以下情况的问题。如果这可能是重复的,我很抱歉,但是你去: 我是并发新手,为了回答问题,我得到了以下代码: a)为什么除了“
我有这个简单的 MigLayout: 最后两个组件 (JScrollPanes) 应具有相同的宽度。但事实上,如果我调整窗口大小,它们会随机跳跃。是否可以使它们的宽度相等?我还能如何排列组件使其看起来
我的 jQuery 导航存在问题。它没有通常的导航设置(ul > li > ul 等)。我这里有一个 jsfiddle:http://jsfiddle.net/RMRGH/2/ 如果将代码放在本主题中
我只使用 HTML/CSS 制作了一个饼图计时器动画。你可以在这里看到它: https://jsfiddle.net/yisusans/why2wy5q/ .timer-container { b
我有一个菱形网格(因此是一个正常的正方形网格,旋转了 45 度),我希望能够在该网格内部拖动一个点。我使用 canvas 元素制作了我的网格并应用了一个转换:rotate(45deg)。但是,这会导致
我目前正在用 C 编写应用程序,我打算在其中模拟 ubuntu 中的 CPU 负载低于 100%。我使用阶乘算法对我的 CPU 施加压力,并使用 nanosleep 函数来调节 CPU 使用率。目标是
我想使用subprocess.Popen来运行一个进程,具有以下要求。 我想在进程运行时将 stdout 和 stderr 通过管道传回 Popen 的调用者。 如果进程仍在运行,我想在 timeou
关闭。这个问题需要debugging details .它目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and th
我正在编写一个客户端,使用套接字从记录 PC (RP) 接收 EEG 数据,以产生一些在线反馈。 RP 有一个通过 TCP 发送数据的服务器。数据与 block 一起发送,每个 block 都有一个标
我在 Win 10 64 位上运行 PG 9.5。我正在 VS 2016 下编译 C。 我正在形成一个函数,它将演变成一个有点复杂的野兽。为了测试我最初的努力,该函数接受一个 int4 数组(这工作正
我正在尝试更新 使用 jquery 标记,但是,当我单击“提交”按钮时,我使用 innerHTML 插入的文本很快就会消失。除非我使用 Firefox,在这种情况下它似乎可以工作 - 如果 - 我插入
使用 st_distance_sphere 时从 MySQL 给出的结果看起来真的很不稳定。 在用户表上运行此查询:(距离点9.45公里以内的用户列表) select *, st_distance_s
所以我昨天发布了一个关于在容器中放置一些 div 的问题,以便它们与容器的边缘对齐,但在中间它们之间的间距相等。由于它们是可排序的(使用 jQuery UI Sortable),所以这很复杂。 Gre
我正在尝试将一个 int 字符串转换为一个 int 数组。 这是我的代码: int premaster1 = 3255859; char hashString[100]; int hashString
我用 Codeigniter 的 Active Record 做了一个简单的选择查询,但不知何故它与我真正的 MySQL 记录有不同的结果。 MyModel.php class MyModel ext
我正面临关于 StampedLock 的奇怪行为.以下是主要有问题的代码行: StampedLock lock = new StampedLock(); long stamp1 = lock.read
我使用 Cython 做了一个相当复杂的 python 扩展。在我得到一些奇怪的内存行为之前,它工作正常,形式如下: *** glibc detected *** /usr/bin/python2.7
请引用这个 fiddle :http://jsfiddle.net/eQegA/3/ .spinner { width: 100px; height: 100px; bord
我有一个不稳定的 Java JMS 问题。片刻工作正常,但不规律地抛出以下异常并中断执行。 请务必注意,这不会停止代理。 javax.jms.JMSException: Peer (vm://test
我编写了一个使用 永久运行的程序C 库。 它基本上解密参数中给出的密码。问题是有时它可以完美地工作,有时它会失败(使用相同的公钥/私钥/密码,返回此错误: message: error:040650
我是一名优秀的程序员,十分优秀!