1

我试图在 swift 中使用包含来查找数组上的值,但是当我使用变量作为谓词时,我得到一个'字符串不可转换为'S.Generator.Element'。

谁能解释这意味着什么以及为什么会发生?

这是原始 JSON,使用 swiftyJSON 加载和解析:

{“假期”:[“01/01/2015”、“12/01/2015”、“23/03/2015”、“02/04/2014”、“03/04/2015”、“01/05” /2015”、“18/05/2015”、“08/06/2015”、“15/06/2015”、“29/06/2015”、“20/07/2015”、“17/08/2015” ”、“2015 年 12 月 10 日”、“2015 年 2 月 11 日”、“2015 年 11 月 16 日”、“2015 年 8 月 12 日”、“2015 年 12 月 25 日”、“2016 年 2 月 1 日”] }

这有效

var haystack:Array<JSON> = jsonData["holidays"].arrayValue
if(contains(haystack, "01/01/2015")) {
    return true
}

这不起作用:

var haystack:Array<JSON> = jsonData["holidays"].arrayValue
var needle:String = "01/01/2015"
if(contains(haystack, needle)) {
    return true
}
4

2 回答 2

5

而不是调用arrayValue,尝试object

if let haystack = jsonData["holidays"].object as? [String] {
    let needle = "01/01/2015"
    if contains(haystack, needle) {
        return true
    }
}
于 2014-12-29T22:46:26.940 回答
1

您的代码应该可以正常运行,请参见下图,并且您的数组类型可能应该是Array<String>.

在此处输入图像描述

于 2014-12-29T22:12:18.677 回答