2017-07-25 21 views
0

私はすぐに新しいです、私はこのメモアプリを作ろうとしています。私は最初のビューコントローラに入るビューコントローラを分割し、そのビューコントローラはテーブルビューコントローラに接続します。すべてがうまくいくのは、アプリを起動するときに、私が望むようなメモをすべて持っているが、私の最初のView Controllerに戻って、私のTable View Controllerに戻ろうとすると、すべてのメモが毎回繰り返されるそれ。私は試みることができるすべてのものを試してみました、私を助けることができる誰もがある 私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) 
     } 
    } 
} 

答えて

1

あなたloadNotesメソッドが追加続けています。 loadNotesの最初の行は次のようになります。

allNotes = [Note]() 

そして、それは空の配列で始まり、それをいっぱいに。

なぜloadNotesは静的メソッドですか?それは悪いデザインです。 Notesを通常のクラスにしてloadNotesをインスタンスメソッドにします。

関連性のないメモ(意図しない言い回し)では、UserDefaultsを使用してアプリケーションデータを保存しないでください。ちょっとした情報を格納するためにだけ使用してください。

+0

ありがとうございます、それは動作します。なぜ私はUserDefaultsの代わりに、coredataを使うべきだと思いますか? –

関連する問題