【问题标题】:Sqlite.swift missing label "where"Sqlite.swift 缺少标签“where”
【发布时间】:2017-08-24 23:44:38
【问题描述】:

我正在使用 here 找到的 sqlite.swift 库

下面是我用来过滤结果的代码:

.filter(mdm[assetTag] != "ipad" && location == facility && [tagArray].contains(appversion))

.contains 部分出现以下错误:

调用中缺少参数标签“where”。

我正在阅读自述文件,不需要在过滤器的 .contains 部分中添加 where 子句。

更新:

数组声明如下:

var tagarray = [String]()

let appversion = Expression<String>("appversion")

【问题讨论】:

  • 请张贴tagArrayappversion 的声明。我知道问题出在哪里,但需要这些值来提供准确的答案
  • 在原始问题中添加了声明。
  • tagArray.contains(appversion) 代替?
  • @Larme 是的,这似乎有效。

标签: swift sqlite.swift


【解决方案1】:

Xcode 认为您使用的是 Swift 的 contains(where:) 而不是库定义的 where(_:)

您的变量appversion 必须是Expression&lt;String&gt; 类型。

let appversion = Expression<String>("appversion")
let tags = ["1.0","2.0.0","3.0"]

someTable.filter(tags.contains(appversion))

【讨论】:

  • 看起来不像。我刚刚发布了所有可用的contains 函数。如果是表达式类型,那么 where 甚至不适用
  • 如果我像使用“1”、“2”等一样更改过滤器和硬编码值,那么错误就会消失,但是当我使用 tagArray 时会出现错误。
  • 似乎我需要做的就是将数组周围的 [] 删除为: .filter(mdm[assetTag] != "ipad" && location == facility && tagArray.contains(appversion))
  • 哦对了。错过了。您使用的是数组数组。
猜你喜欢
  • 1970-01-01
  • 2015-10-12
  • 2020-10-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-18
  • 2014-06-21
相关资源
最近更新 更多