检索实例的类属性(从实例列表中)

时间:2018-11-18 00:05:14

标签: ios swift xcode

对于我的应用程序,我定义了一个名为Event的类,该类的实现如下:

class Event  {
    var test_value: Int
    init?(Detail_Test_Value: Int) {
        self.test_value = Detail_Test_Value
    }
}

我已经为应用程序实现了一个UITableView接口,并能够将新实例添加到列表中,在viewcontroller中可以添加新实例,我准备了该类的新实例Event如下:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {

    super.prepare(for: segue, sender: sender)

    guard let button = sender as? UIBarButtonItem, button === saveButton else {
        os_log("Cancelling Action, The Save Button Was not Pressed", log: OSLog.default,type: .debug)
        return
    }


    let TEST_VALUE = (test_value_label.text!)


    event = Event(Detail_Test_Value: Int(TEST_VALUE)!)

}

然后在TableViewController中,将新创建的类Event的实例附加到events函数中名为unwind的列表中,如下所示:

@IBAction func unwindToEventList(sender: UIStoryboardSegue){

    if let sourceViewController = sender.source as NewEventViewController, let event = sourceViewController.event {
        if let selectedIndexPath = tableView.indexPathForSelectedRow {
            events[selectedIndexPath.row] = event
            tableView.reloadRows(at: [selectedIndexPath], with: .none)
        }  else  {
            let newIndexPath = IndexPath(row: events.count, section: 0)
            events.append(event)
            tableView.insertRows(at: [newIndexPath], with: .automatic)
        }
    }

}

我的目标是为类test_value的所有实例获取Event的总和,并在另一个UILabel的{​​{1}}中显示值,因为所有实例被附加到列表View上,我尝试在同一events中定义一个函数,如下所示:

TableViewController

然后每次打开func get_test_value () -> Int{ var a = 0 for e in events{ a += e.test_value } return a } 时,调用该函数并将其值分配给另一个UILabel中的View

View

我没有收到任何错误,并且该应用程序可以正常构建和运行,但是override func viewDidAppear(_ animated: Bool) { let tabel_view = TableViewController() test_label.text = String(table_view.get_test_value()) } 将始终显示UILabel,并且不会因重新打开它所在的0而改变添加更多具有非零ViewController的{​​{1}}实例,我尝试使用代码将实例追加到列表Event,而不是将其与完整的UI添加在一起,但是值仍然保持{{1 }}无论如何。我该如何解决这个问题?

0 个答案:

没有答案