ios - 如何安全地在UITableView中使用未初始化的数组并显示一个空表

标签 ios arrays uitableview nsuserdefaults

当数组为空并且您从UITableView或UIPickerView发出请求时,如何防止崩溃?

我当前的方法是始终在将数组与伪数据一起使用之前初始化我的数组,但是我对此方法并不满意,因为有时不需要伪数据,甚至更糟,有时显示数据甚至没有意义。 ,实际上大部分时间我想要的是在没有数据的情况下显示一个空表。

例如,如果我要从NSUserDefaults中检索要在UITableView中使用的数组,通常会在AppDelegate中对其进行初始化,如下所示:

AppDelegate.swift:

    NSUserDefaults.standardUserDefaults().registerDefaults([
        keyMyAarray:["Dummy Data"]// initializing array
     ])

SomeViewController:
var myArray = read content from NSUserDefaults...

func numberOfSectionsInTableView(tableView: UITableView) -> Int {
    return 1
}

fun tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return myArray.count
}

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {        
    var cell = UITableViewCell()
    cell.textLabel.text = myArray[indexPath.row]
    return cell
}

同样,如何安全地在UITableView中使用未初始化的数组并显示一个空表?

最佳答案

无需在阵列中放入“虚拟数据”。您可以只初始化一个空数组。像下面

    var myArray = [String]()

并在numberOfRowsInSection中返回myArray.count。如果count为零,则不会调用cellForRowAtIndexPath,您可以放心。

关于ios - 如何安全地在UITableView中使用未初始化的数组并显示一个空表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39593900/

相关文章:

uitableview - 由deleteRowsAtIndexPaths引起的崩溃

java - 是否可以使用 for-each 循环在单次迭代中迭代下一个元素以及如何实现?

ios - 动态 UITableViewCell 的 subview 中的 AutoLayout 问题

ios - 在 iOS 7 SDK 中找不到 libIOKit.A.dylib

ios - 使自定义类中的委托(delegate)方法在 Swift 中可重写

ios - 如何在 Swift 中淡入和淡出同一个 UILabel 上的不同文本?

iOS ffmpeg 如何运行命令来修剪远程 url 视频?

php - 遍历数组并创建一个具有匹配参数名称的新数组

javascript - 如何过滤数据并将其显示在数组顶部?

iphone - 将文本从 TableViewController 传递到 ViewController