【问题标题】:TableView return repeated items every time app runs每次应用运行时,TableView 都会返回重复项
【发布时间】:2017-04-01 12:25:09
【问题描述】:

所以,我使用的是 Realm 数据库,我的 TableView 每次都会返回一组新数据。所以,第一次,我得到了 3 个项目。第二次是6个项目等等。

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
}

我将不胜感激。谢谢

【问题讨论】:

    标签: ios xcode uitableview realm


    【解决方案1】:

    我相信这是因为每次加载此控制器时,您都会向 Realm 添加三个对象。由于默认情况下 update 为 false,因此您每次都将向 Realm 添加三个新对象。如果将 update 更改为 true,那么它应该使用对象的主键并在每次视图控制器加载时“更新”这些对象。

    public func add(_ object: Object, update: Bool = false)
    

    【讨论】:

      猜你喜欢
      • 2019-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-13
      • 1970-01-01
      相关资源
      最近更新 更多