我定义了三个类:
CoffeeBrand:
dynamic var brandName = ""
let brands = List<Coffee>()
咖啡:
dynamic var name = ""
let cupAmount = List<CoffeeCup>()
CoffeeCup:
dynamic var cup = 0
dynamic var caffeine = 0
并且想尝试一下,所以我添加了一个品牌星巴克来试试它在桌子上会是什么样的
class CoffeeListsTableViewController: UITableViewController {
// MARK: Properties
var brands: Results<CoffeeBrand>!
override func viewDidLoad() {
super.viewDidLoad()
let Starbucks = CoffeeBrand(value: ["Starbucks",["Iced Latte", [200,150],[500,150]]])
try! realm.write() {
realm.add(Starbucks)
}
}
}
但我得到的是“线程1:信号SIGABRT”,我检查了我认为这应该没有线程1(我谷歌并试图找到其他人的问题有什么不对)
在表数据源中使用:
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 {
return brands.count
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell{
//let cellIdentifier = "CoffeeBrandTableViewCell"
let cell = tableView.dequeueReusableCell(withIdentifier: "CoffeeBrandTableViewCell", for: indexPath) as! CoffeeBrandTableViewCell
// in my cell, only a label of brandName
let brandList = brands[indexPath.row]
cell.brandName.text = brandList.brandName
return cell
}
答案 0 :(得分:0)
从该代码的外观来看,您永远不会为brands
分配值。由于您宣布明确解开品牌,这可能会导致问题。
class CoffeeListsTableViewController: UITableViewController {
// MARK: Properties
let brands = try! Realm().objects(CoffeeBrand.self)
override func viewDidLoad() {
super.viewDidLoad()
}
}
另外,realm.add
每次调用时都会向Realm数据库添加一个新对象。在当前的代码中,每次加载视图控制器时,都会添加星巴克对象的新副本。在向Realm添加对象时添加更多控件会更合适。