领域数据保存到数据库,但没有在Swift 4中填充标签

时间:2018-01-23 18:14:26

标签: ios realm swift4

我正在创建一个使用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 }
        }
    }
}

1 个答案:

答案 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]
        }
    }