【问题标题】:Swift 3: switching on UILabel.text and getting type error but type matchesSwift 3:打开 UILabel.text 并出现类型错误但类型匹配
【发布时间】:2017-10-21 08:25:52
【问题描述】:

我有一个带有 [String] 类型参数的函数。我可以调用该函数并成功执行。但是,我最近在添加新数据源时遇到了错误,我正在尝试调试。我正在打开数组参数,使用我传入的相同值来调用函数。 Swift 报错:

[String] 类型的 Swift 表达式模式无法匹配 [String] 类型的值

这是我正在使用的代码部分:

func calcRelevance(array: [String]) {
    /* block of code */

    if relevanceArr.count >= 1 {
        //do something
    } else {
        switch array {
            case self.someArray: 
                self.label.text = "No results returned from some data source"
            case self.someOtherArray: 
                self.label.text = "No results returned from some other data source"
            default: 
                self.label.text = "Your search yielded no results. Please refine your search by tapping back and using more relevant search terms"
        }
    }
}

当我输入此内容时,我意识到我可能无法在 if 语句中使用 switch 块。我不确定控制流是否允许这样,如果是这样的话,从中得到类型错误似乎很奇怪。

另外,我查看了Switching on UIButton title: Expression pattern of type 'String' cannot match values of type 'String?!',它与展开可选选项有关,我认为这里不适用。

【问题讨论】:

  • 我认为你不能在 switch 语句中使用数组,因为 switch 使用整数值。尝试使用 if 语句来比较它们。
  • 我正在打开一个参数,我想我可以打开任何与该参数相同类型的东西。我认为 Swift 能够推断出我是说如果这个数组被用于这个参数做这个例如,在另一个函数中,我在 switch 语句中比较字符串值。但是,唉,我会尝试 if/else 野兽的行之有效的方法并报告回来
  • 我切换到 else if 语句并且它构建,但标签输出没有改变
  • 您的相关性Arr 中可能有项目。
  • 当relationalArr 不为空时,标签会填充releaseArr 的结果...标签保持初始值“正在加载,请稍候...”

标签: swift


【解决方案1】:

这不是开关的工作方式。开关不期望 case 值是数组。如果要比较数组,请改用 if 语句。

if array == someArray { 
    /* do something */ 
} else if array == someOtherArray { 
    /* do something else */ 
} else { 
    /* do another thing */ 
}

【讨论】:

  • 我猜数组是你不能在 switch 语句中使用的少数例外之一
  • 我不是在比较数组。我正在比较预期类型为数组的函数参数的值
  • 那么...您是在比较数组吗?如果一个参数的值是一个数组,并且你正在将它与另一个数组进行比较......我错过了什么吗?
  • 在switch语句中我的意思是如果这个参数持有这个数组,把这个消息打印到这个标签上。注意函数参数(数组:[String])和切换数组的switch语句
  • 这就是我的回答。如果参数是someArraysomeOtherArray,它会做一些事情。这是您尝试执行的操作,但开关不起作用。
猜你喜欢
  • 2016-01-23
  • 1970-01-01
  • 1970-01-01
  • 2017-01-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-09
相关资源
最近更新 更多