我正在创建一个使用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 }
}
}
}
答案 0 :(得分:0)
在设置标签文本值之前,您应该调用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]
}
}