将价值传递给私人财产

时间:2019-05-30 08:08:57

标签: ios swift

我有几个这样定义的私有属性。

private var tableConfig : TableViewConfig<Company, CompanyCell>?

private var tabledata = [Company]() {
    didSet {
      tableConfig?.items = tabledata
    }
  }   

现在定义了2个其他属性,像这样...

  var model: Model?
  var companyCell: TableviewCell?

现在,如果在模型中获得的值为Industry,在companyCell中获得的值为IndustryCell,那么如何将这些值更新为private var tableConfig : TableViewConfig....private var tabledata = [Company]()....以便它们最终将具有这样的值。

private var tableConfig : TableViewConfig<Industry, IndustryCell>?

private var tabledata = [Industry]() {
    didSet {
      tableConfig?.items = tabledata
    }
  } 

3 个答案:

答案 0 :(得分:0)

您可以使用get set变量来实现此结果

var _tabledata: [Industry] {
        get {
            return tabledata
        }
        set {
            tabledata = newValue
        }
    }

答案 1 :(得分:0)

由于属性private表示声明为private的属性和函数只能在它们声明的范围内访问。

您有两个选择:

  1. 将访问控制更改为fileprivate(如果呼叫者在同一文件中)或internal或更低限制。
  2. 在私有属性的范围内添加internal或更低限制的计算属性或方法进行设置。

答案 2 :(得分:0)

您可以公开init()method来设置private properties的值,即

class SampleClass {
    private var tableConfig : TableViewConfig<Company, CompanyCell>?
    private var tabledata = [Company]() {
        didSet {
            tableConfig?.items = tabledata
        }
    }

    init(tableData: [Company]) {
        self.tabledata = tabledata
    }

    func add(item: Company) {
        self.tabledata.append(item)
    }
}

如果想要init initialise,可以创建一个private variable,如果想要method {{1 }}。