2017-04-01 4 views
0

したがって、私はRealmデータベースを使用しています。私のTableViewは毎回新しいデータセットを返します。だから初めて、私は3つのアイテムを持っていた。 2回目は6アイテムなどです。TableViewは、アプリケーションが実行されるたびに繰り返し項目を返します。

import UIKit 
import RealmSwift 


class TableViewController: UITableViewController { 

var ModelName = [String]() 
var Power = [String]() 



func addPanel() { 

    let realm = try! Realm() 
    let allPanels = realm.objects(Panel) 
    try! realm.write { 
     realm.add(Panel(model: "Hyundai", power: 260)) 
     realm.add(Panel(model: "Honda", power: 420)) 
     realm.add(Panel(model: "Siemens", power: 280)) 
    } 

    tableView.reloadData() 


    for i in allPanels { 
     ModelName.append(i.model) 
     Power.append("\(i.power)") 
    } 

} 

override func viewDidLoad() { 
    super.viewDidLoad() 
    addPanel() 

} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated. 
} 

// MARK: - Table view data source 

override func numberOfSections(in tableView: UITableView) -> Int { 
    // #warning Incomplete implementation, return the number of sections 
    return 1 
} 

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
    // #warning Incomplete implementation, return the number of rows 
    return ModelName.count //changed from 3 
} 


override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
    let cell:TableViewCell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) as! TableViewCell 
    //connect NameLabel cell to the name of Model and PowerLabel cell to the power 

    cell.NameLabel.text = ModelName[indexPath.row] 
    cell.PowerLabel.text = Power [indexPath.row] 



    return cell 
} 

私は自分の行数を3に制限すると、アプリケーションが動作します。

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
    // #warning Incomplete implementation, return the number of rows 
    return ModelName.count //changed from 3 
} 

私は助けていただきありがとうございます。ありがとうございます

答えて

0

このコントローラーが読み込まれるたびに、Realmに3つのオブジェクトが追加されると思います。デフォルトでは、更新はfalseなので、毎回Realmに3つの新しいオブジェクトを追加します。 updateをtrueに変更すると、オブジェクトの主キーを使用し、ビューコントローラがロードするたびにこれらのオブジェクトを「更新」する必要があります。

public func add(_ object: Object, update: Bool = false) 
関連する問題