当前位置: 首页 > 面试题库 >

Swift中的UITableView

孔嘉茂
2023-03-14
问题内容

我正在努力弄清楚此代码段出了什么问题。目前这在Objective-
C中有效,但是在Swift中这只是在方法的第一行崩溃。它在控制台日志中显示错误消息:Bad_Instruction

func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell!  {
        var cell : UITableViewCell = tableView.dequeueReusableCellWithIdentifier("Cell") as UITableViewCell

        if (cell == nil) {
            cell = UITableViewCell(style: UITableViewCellStyle.Value1, reuseIdentifier: "Cell")
        }

        cell.textLabel.text = "TEXT"
        cell.detailTextLabel.text = "DETAIL TEXT"

        return cell
    }

问题答案:

另请参阅马特的答案,其中包含解决方案的后半部分

让我们找到一个无需创建自定义子类或笔尖的解决方案

真正的问题在于,Swift区分可以为空(nil)的对象和不能为空的对象。如果您没有为标识符注册笔尖,则dequeueReusableCellWithIdentifier可以返回nil

这意味着我们必须将变量声明为可选的:

var cell : UITableViewCell?

而且我们必须使用as?notas

//variable type is inferred
var cell = tableView.dequeueReusableCellWithIdentifier("CELL") as? UITableViewCell

if cell == nil {
    cell = UITableViewCell(style: UITableViewCellStyle.Value1, reuseIdentifier: "CELL")
}

// we know that cell is not empty now so we use ! to force unwrapping but you could also define cell as
// let cell = (tableView.dequeue... as? UITableViewCell) ?? UITableViewCell(style: ...)

cell!.textLabel.text = "Baking Soda"
cell!.detailTextLabel.text = "1/2 cup"

cell!.textLabel.text = "Hello World"

return cell


 类似资料:
  • 问题内容: 我正在学习Swift,还有另一个问题。Swift中是否有常规的epression,如果有,我该如何使用它们? 在研究中,我发现了一些相互矛盾的信息。Apple Developer文档中 有提及RegEx的内容,但它与我见过的任何其他语言看起来都非常不同。如果这是解决方案,该如何使用? 另一方面,该网站建议RegEx在Swift中不存在。这样对吗? 如果有帮助,我尝试使用正则表达式从包含

  • 问题内容: 我正在尝试在Swift中创建字符串的HMAC SHA-1哈希,但是由于它似乎没有导入CommonCrypto框架,因此无法弄清楚如何与API进行交互。我尝试了各种不同形式的“ import CommonCrypto”并创建了一个桥接头文件,但没有一个起作用。 奇怪的是,如果我创建一个Objective-C类,那么我就可以与API交互而不会出现任何问题,因此这似乎是Swift特有的。 另

  • 问题内容: Swift当前是否支持宏,或者将来有计划添加支持吗?目前,我正在散布: 在我的代码中的各个地方。 问题答案: 在这种情况下,应为“宏”参数添加默认值。 Swift 2.2及更高版本 Swift 2.1及更低版本 这是和功能做。 除了其他答案中已经提到的条件编译之外,没有其他宏。

  • 问题内容: 我正在尝试创建一个in,但是遇到了一些麻烦。 是同一个类中的函数。 我在编辑器中遇到错误: 找不到接受提供的参数的’init’的重载 当我更改为错误时消失。 我试过了: 但是没有任何效果,我在参考文献中找不到解决方案。 问题答案: Swift 本身 不使用选择器-在Objective-C中,使用选择器的几种设计模式在Swift中的工作方式有所不同。(例如,在协议类型或/ 测试上使用可选

  • 我一直在尝试实现一个单例,以用作我从网络上传到iOS应用程序的照片的缓存。我在下面的代码中附加了三个变体。我试图让变体2工作,但它导致一个编译器错误,我不明白,并希望得到关于我做错了什么的帮助。变体 1 执行缓存,但我不喜欢使用全局变量。变体3不做实际的缓存,我相信这是因为我在var ic = ....的分配中得到了一个副本,这是正确的吗? 任何反馈和见解将不胜感激。 谢谢,Zvi

  • 问题内容: 我相信我遇到了一个问题,即我的关闭发生在后台线程上,而UITableView的更新速度不够快。我正在打电话给REST服务,而在关闭时,我有一个电话,但是要花几秒钟的时间才能发生。如何使数据重新加载更快(也许在主线程上?) REST查询功能-使用SwiftyJSON库进行解码 在调试器中调用一次 问题答案: UIKit不是线程安全的。UI仅应从主线程更新: 更新 。在Swift 3及更高