Swift 我的细胞正在自我复制
我是swift的新手,我正在尝试制作这个便笺应用程序。我的第一个视图控制器中有拆分视图控制器,该视图控制器连接到表视图控制器。一切都很完美,只是当我启动应用程序时,我有了我想要的所有注释,但当我尝试返回到我的第一个视图控制器并返回到我的表视图控制器时,每次我这样做时,所有注释都会重复。我尽了我所能,有人能帮我吗 我的MasterViewController是Swift 我的细胞正在自我复制,swift,uitableview,Swift,Uitableview,我是swift的新手,我正在尝试制作这个便笺应用程序。我的第一个视图控制器中有拆分视图控制器,该视图控制器连接到表视图控制器。一切都很完美,只是当我启动应用程序时,我有了我想要的所有注释,但当我尝试返回到我的第一个视图控制器并返回到我的表视图控制器时,每次我这样做时,所有注释都会重复。我尽了我所能,有人能帮我吗 我的MasterViewController是 import UIKit class MasterViewController: UITableViewController { va
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)
}
}
}
class func loadNotes()
{
默认设置:UserDefaults=UserDefaults.standard
让saveData:[NSDictionary]?=默认值。对象(forKey:kAllNotes)为?[NSDictionary]
如果let data:[NSDictionary]=保存数据
{
对于0中的i:Int..
您的loadNotes
方法一直在追加。loadNotes
的第一行应该是:
allNotes = [Note]()
然后它从一个空数组开始并填充它
为什么loadNotes
是一种静态方法?那是个糟糕的设计。使Notes
成为普通类,并使loadNotes
成为实例方法
在一个不相关的注释中(没有双关语),不要使用
UserDefaults
存储应用程序数据。只用于存储少量信息。非常感谢,它很有效。为什么我认为应该使用then而不是UserDefaults,coredata?