[英]Realm data is saved to database but is not populating labels in Swift 4
I am making an app that uses Realm to persist data, and I have run into a small bug and cant seem to figure it out. 我正在制作一个使用Realm保留数据的应用程序,但遇到了一个小错误,似乎无法弄清楚。 I know it has to be something simple that I am overlooking, as I have a couple other View Controllers that use very similar code and they work.
我知道它一定是我所忽略的简单事物,因为我还有其他两个使用非常相似的代码且可以正常工作的View Controller。 so here it is.
就是这样
I have a View Controller that has inputs for information and it works fine sends the data to Realm. 我有一个View Controller,它具有信息输入,并且工作正常,可以将数据发送到Realm。 On a different View Controller I have code to display that data in labels but it does not display the information on the labels they are blank in fact even the default text does not show on the screen?
在另一个View Controller上,我有代码可以在标签中显示该数据,但是它不会在标签上显示信息,而实际上它们是空白的,即使默认文本不在屏幕上显示? Help!!!
救命!!!
Here is the code for the display VC. 这是显示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 }
}
}
}
You should call loadCompany
method before set the labels text values, something like this 您应该在设置标签文本值之前调用
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
}
other issue is what is selectedCompany? 另一个问题是选择了什么公司? assuming that is the first result of your
realm
query, your loadCompany
method should be something like this 假设这是您的
realm
查询的第一个结果,则loadCompany
方法应类似于以下内容
func loadCompany(){
myCompany = realm.objects(CompanyInfo.self)
if(myCompany.count > 0){
//Asigning value to "selectedCompany" variable
self.selectedCompany = myCompany[0]
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.