【发布时间】:2016-07-05 00:26:11
【问题描述】:
每当我打开我的应用程序时,它都不会加载我的数组值,因为没有调用 != nil 函数。对此我有什么办法吗?
代码:
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
var toDoData = NSUserDefaults.standardUserDefaults()
if (toDoData.valueForKey("TDDATA") != nil){
todos = toDoData.valueForKey("TDDATA") as! NSArray as! [TodoModel]
}
if todos.count != 0{
toDoData.setValue(todos, forKeyPath: "TDDATA")
toDoData.synchronize()
}
}
不用担心桌子。它完美地填充。我只需要修复加载数据问题。
您的答案中包含的代码很有帮助!
谢谢。
更新:
这是 TodoModel:
import Foundation
import UIKit
class TodoModel : NSObject, NSCoding {
var id: String
var image: String
var title: String
var desc: String
var scores: String
init (id: String, image: String, title: String, desc: String, scores: String) {
self.id = id
self.image = image
self.title = title
self.desc = desc
self.scores = scores
}
}
【问题讨论】:
-
你还把什么东西保存到
NSUserDefaults?此保存不会执行,因为计数将为 0 -
我知道。我只需要一种在没有数据加载时应用程序不会崩溃的执行方法。
-
您显示的代码(可能)没问题,但是当您向
todos数组添加新条目时,您需要将数据保存在某处。我说可能是因为我不知道你是否为ToDoModel实现了 NSCoding。您应该在第一个if之后有一个else,它将一个空数组分配给todos -
@AndyLebo 从设备中删除应用程序并再次调试。当你第二次重新启动应用程序时,显然你会有一些缓存,它会再次击中你的 != 0 设置器。也检查一下逻辑。
标签: ios xcode swift nsarray nsuserdefaults