Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 我的细胞正在自我复制_Swift_Uitableview - Fatal编程技术网

Swift 我的细胞正在自我复制

Swift 我的细胞正在自我复制,swift,uitableview,Swift,Uitableview,我是swift的新手,我正在尝试制作这个便笺应用程序。我的第一个视图控制器中有拆分视图控制器,该视图控制器连接到表视图控制器。一切都很完美,只是当我启动应用程序时,我有了我想要的所有注释,但当我尝试返回到我的第一个视图控制器并返回到我的表视图控制器时,每次我这样做时,所有注释都会重复。我尽了我所能,有人能帮我吗 我的MasterViewController是 import UIKit class MasterViewController: UITableViewController { va

我是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)
        }
    }
}
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?