【问题标题】:Swift 2 - create empty array of UITableVIewCellSwift 2 - 创建 UITableVIewCell 的空数组
【发布时间】:2016-01-08 08:07:20
【问题描述】:

我有一个UITableViewController 的子类,我在其中定义了

var allCells: [UITableViewCell]

但它给了我错误

没有初始值的存储属性“allCells”会阻止合成 初始化器

它建议我将定义更改为

var allCells: [UITableViewCell] = []

但是“修复”也不起作用,因为它失败了

类 '...' 没有初始化器

如何定义一个变量,它将是 arrayUITableViewCell


更新

这是我的班级的样子

class MyClass: UITableViewController, SomeDelegate {



    @IBAction func cancelAction(sender: AnyObject) {

        self.delegate?.closeScreen()
    }




    var delegate: SomeDelegate?
    var newUser = NewUser()

    var datePickerCell: UITableViewCell
    var allCells: [UITableViewCell]

    override func viewDidLoad() {

        allCells = [
            self.tableView.dequeueReusableCellWithIdentifier("....")!,
            self.tableView.dequeueReusableCellWithIdentifier("....")!,
            self.tableView.dequeueReusableCellWithIdentifier("....")!
        ]

        datePickerCell = self.tableView.dequeueReusableCellWithIdentifier("DPCell")!

        NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("keyboardWillShow:"), name:UIKeyboardWillShowNotification, object: nil);
        NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("keyboardWillHide:"), name:UIKeyboardWillHideNotification, object: nil);


        initStyles()


    }

    .....

}

【问题讨论】:

  • 第二行是正确的。肯定有其他问题。你能显示更多上下文代码吗?
  • 其实第二个是对的。向我们展示您的其余代码......或者试试这个:var allCells:[UITableViewCell]? = [] 虽然它没有真正意义,因为它应该在没有“?”的情况下工作而且它不是可选的,因为它是空的......
  • 您可能还有一些未正确初始化的属性,请显示更多代码。该错误消息与您现在显示的消息无关。
  • 我已经用更多代码更新了帖子

标签: ios swift uitableview swift2


【解决方案1】:

试试

   var datePickerCell: UITableViewCell!
   var allCells: [UITableViewCell]()

【讨论】:

  • 还是同样的错误 - 类 '...' 没有初始化器
  • @Stevik 正如预期的那样,因为您所展示的内容非常好,请提供更多代码。
  • 然后发布更多代码。肯定有其他问题。
  • @joey 谢谢,你是救生员,它有效!我也试过 var allCells: [UITableViewCell] = [] 也可以,那么哪个更好?
  • 这取决于你想要什么。据我所知(而且我不是专家——我自己只有 267 名声望,哈哈),说 var allCells: [UITableViewCell] = [] 正在制作一个新的 uitableviewcells 空数组。这意味着数组存在并且您可以在其上调用方法(如 allCells.count),它将返回该值——因为它存在,但其中只有 0 个值。说 var allCells= [UITableViewCell]() 正在初始化一个新数组,但它还没有值。它不是空的,但它的内容也不是满的——数组只是在等待使用。这是我的理解。也许其他人会更清楚
【解决方案2】:

你应该使用

var allCells = [UITableViewCell]()

并让编译器推断类型。

另外,这可能是个坏主意,因为 UITableViews 不需要这样做。但是你去吧,以防你有正当理由存储它。

编辑: 正如编译器已经告诉你的那样,

var allCells : [UITableViewCell]

只定义allCells'类型而不初始化。 UITableViewCell 数组的正确初始值设定项是 [UITableViewCell]()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-07
    • 1970-01-01
    • 2015-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多