当前位置: 首页 > 知识库问答 >
问题:

Swift Guard语句用法

燕永昌
2023-03-14

根据我对快速保护声明的理解,我正在做以下工作:

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
{
    let identifier = "identifier"
    let dequeCell = tableView.dequeueReusableCellWithIdentifier(identifier)

    guard let cell = dequeCell else
    {
        // The following line gives error saying: Variable declared in 'guard'condition is not usable in its body
        cell = UITableViewCell(style: .Default, reuseIdentifier: identifier)
    }

    cell.textLabel?.text = "\(indexPath.row)"

    return cell
}

我只想了解一下,我们是否可以在 guard 语句中创建一个变量,并在函数的其余部分访问它?或者保护语句是否旨在立即返回或引发异常?

还是我完全误解了警卫声明的用法?

共有1个答案

程英资
2023-03-14

文档对此进行了很好的描述

如果满足保护语句的条件,则在保护语句的右大括号之后继续执行代码。使用可选绑定作为条件的一部分分配值的任何变量或常量都可用于出现 guard 语句的代码块的其余部分。

如果不满足该条件,则执行 else 分支中的代码。该分支必须转移控制权才能退出出现 guard 语句的代码块。它可以使用控制传输语句(如返回、中断、继续或抛出)执行此操作,也可以调用不返回的函数或方法(如 fatalError())。

在您的特定情况下,您根本不需要保护语句,因为推荐的方法dequeueReusableCellWithIdentifier:forIndexPath:始终返回非可选类型。

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
{
    let identifier = "identifier"
    let dequeCell = tableView.dequeueReusableCellWithIdentifier(identifier, forIndexPath: indexPath)
    cell.textLabel?.text = "\(indexPath.row)"
    return cell
}
 类似资料:
  • 1.1. 用户语句(user_says) 1.2. 用户语句(user_says)类型 1.1. 用户语句(user_says) 为意图配置任何可能的用户语句,形成映射关系。例如,我们对意图中定义的JSON进行完善: { "intents": [ { "intent": "bestcoffeebar", "slots": [ { "name": "

  •  语句和语句块是 TJS2 语法中非常重要的元素。 语句  一个语句以 ; (分号) 结束。可以是表达式后直接加分号,也可以是 if 等控制语句后加分号。 例: a++; func1(); returna+b; 等等…… 语句块  语句块由多个语句组成,用{ }括起来表示。语句块中的语句按由上至下的顺序执行。 例: { a++; b++; } { vart=func1(); func2(t); b

  • 问题内容: 有人可以向我解释该声明的工作方式吗? 例如,我在包中有一个类型: 我的包裹中有一个类型: 这给了我以下错误: 我试图将导入更改为以下代码: 但是得到这个错误: 我也不明白。那么,和之间有什么区别?如何正确设置我的模型? 问题答案: 每个包都有一组类型,函数,变量等。我们将它们称为 实体 。每个实体可以导出(名称以大写字母开头),也可以不导出(名称以小写字母开头)。 一个包只能访问另一个

  • 本页包含内容: 循环语句 分支语句 带标签的语句 控制传递语句 在 Swift 中,有两种类型的语句:简单语句和控制流语句。简单语句是最常见的,用于构造表达式和声明。控制流语句则用于控制程序执行的流程,Swift 中有三种类型的控制流语句:循环语句、分支语句和控制传递语句。 循环语句用于重复执行代码块;分支语句用于执行满足特定条件的代码块;控制传递语句则用于修改代码的执行顺序。在稍后的叙述中,将会

  • 语句 条件控制语句 其中expression可以使用整型,字符串,甚至表达式 if (expression0) {statement0} else if (expression1) {statement1} else {statement2} // JavaScript 中的 case 可以使用整型,字符串,甚至表达式 switch(persion.type) { case "teacher

  • 着色器语言GLSL中关于if语句、for语句的使用,和javascript语言、C语言中的if语句、for语句执行逻辑规则基本一致,这里默认你已经有一定的编程基础,也就不做过多讲解,只是简单说明一下。 单独使用if if(x>100){ gl_FragColor = vec4(1.0,0.0,0.0,1.0);//红色 } if-else形式 bool colorBool; // 根据布尔值