所以,我正在使用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
}
我将不胜感激任何帮助。谢谢
答案 0 :(得分:0)
我相信它是因为每次加载此控制器时,都会向Realm添加三个对象。因为默认情况下,update为false,所以每次都会向Realm添加三个新对象。如果您将更新更改为true,那么它应该使用对象的主键和"更新"这些对象每个视图控制器负载。
public func add(_ object: Object, update: Bool = false)