Realm 数据会保存到数据库中,但不会在 Swift 4 中填充标签



我正在制作一个使用 Realm 来持久化数据的应用程序,我遇到了一个小错误,似乎无法弄清楚。我知道它一定是我忽略的简单东西,因为我还有其他几个视图控制器使用非常相似的代码并且它们有效。所以它来了。

我有一个视图控制器,它有信息输入,它可以很好地将数据发送到 Realm。在不同的视图控制器上,我有代码可以在标签中显示该数据,但它不会在标签上显示信息,它们实际上是空白的,实际上即使默认文本也没有显示在屏幕上?帮助!!!

下面是显示 VC 的代码。

import UIKit
import RealmSwift
class CompanyViewController: UIViewController {
var myCompany: Results<CompanyInfo>?
let realm = try! Realm()
var selectedCompany: CompanyInfo? {
didSet { }
}
override func viewWillAppear(_ animated: Bool) {
loadCompany()
}
override func viewDidLoad() {
super.viewDidLoad()
nameLabel?.text = selectedCompany?.companyName
addressLabel.text = selectedCompany?.companyAddress
cityLabel.text = selectedCompany?.companyCity
stateLabel.text = selectedCompany?.companyState
postalLabel.text = selectedCompany?.companyPostalCode
phoneLabel.text = selectedCompany?.companyPhoneNumber
emailLabel.text = selectedCompany?.companyEmail
}
func loadCompany(){
myCompany = realm.objects(CompanyInfo.self)
}
@IBOutlet weak var nameLabel: UILabel!
@IBOutlet weak var addressLabel: UILabel!
@IBOutlet weak var cityLabel: UILabel!
@IBOutlet weak var stateLabel: UILabel!
@IBOutlet weak var postalLabel: UILabel!
@IBOutlet weak var phoneLabel: UILabel!
@IBOutlet weak var emailLabel: UILabel!
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "AddCompanySegue" {
guard segue.destination is UINavigationController else { return }
}
}
}

你应该在设置标签文本值之前调用loadCompany方法,如下所示

override func viewDidLoad() {
super.viewDidLoad()
//first load the company
self.loadCompany()
nameLabel?.text = selectedCompany?.companyName
addressLabel.text = selectedCompany?.companyAddress
cityLabel.text = selectedCompany?.companyCity
stateLabel.text = selectedCompany?.companyState
postalLabel.text = selectedCompany?.companyPostalCode
phoneLabel.text = selectedCompany?.companyPhoneNumber
emailLabel.text = selectedCompany?.companyEmail
}

另一个问题是选择什么公司? 假设这是realm查询的第一个结果,您的loadCompany方法应该是这样的

func loadCompany(){
myCompany = realm.objects(CompanyInfo.self)
if(myCompany.count > 0){
//Asigning value to "selectedCompany" variable
self.selectedCompany = myCompany[0]
}
}

最新更新