我是swift的新手,我正在努力制作这个笔记应用。我有拆分视图控制器进入我的第一个视图控制器,该视图控制器连接到表视图控制器。一切正常,就是当我启动应用程序时,我有我想要的所有笔记但是当我尝试回到我的第一个视图控制器并返回到我的表视图控制器时,所有注释都是每次我都重复它。我尝试了所有可以尝试的东西,是否有人可以帮助我 我的MasterViewController是
import UIKit
class MasterViewController: UITableViewController {
var detailViewController: DetailViewController? = nil
override func viewDidLoad()
{
super.viewDidLoad()
Note.loadNotes() // The problem is here, I think
noteTable = self.tableView
// Do any additional setup after loading the view, typically from a nib.
let addButton = UIBarButtonItem(barButtonSystemItem: .add, target: self, action: #selector(insertNewObject(_:)))
navigationItem.rightBarButtonItem = addButton
if let split = splitViewController
{
let controllers = split.viewControllers
detailViewController = (controllers[controllers.count-1] as! UINavigationController).topViewController as? DetailViewController
}
}
我的loadNotes函数是
class func loadNotes()
{
let defaults:UserDefaults = UserDefaults.standard
let saveData: [NSDictionary]? = defaults.object(forKey: kAllNotes) as? [NSDictionary]
if let data:[NSDictionary] = saveData
{
for i:Int in 0 ..< data.count
{
let n:Note = Note()
n.setValuesForKeys(data[i] as! [String : Any])
allNotes.append(n)
}
}
}
答案 0 :(得分:1)
您的loadNotes
方法会不断添加。 loadNotes
的第一行应该是:
allNotes = [Note]()
然后它以一个空数组开始并填满。
为什么loadNotes
是静态方法?这是一个糟糕的设计。使Notes
成为普通类,并使loadNotes
成为实例方法。
在不相关的注释(无双关语)上,请勿使用UserDefaults
来存储应用数据。只用它来存储一点点信息。