如何在swiftyJSON对象上使用contains

时间:2014-12-29 22:05:29

标签: swift contains swifty-json

我正在尝试使用swift中的contains来查找数组中的值,但是当我使用变量作为谓词时,我得到一个'String不能转换为'S.Generator.Element'。

有人能解释这意味着什么,为什么会发生?

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

{   “假期”:[     “2015年1月1日”,     “2015年12月1日”,     “23/03/2015”,     “2014年2月4日”     “2015年3月4日”     “2015年1月5日”,     “18/05/2015”,     “2015年8月6日”,     “15/06/2015”,     “29/06/2015”,     “20/07/2015”,     “17/08/2015”,     “2015年12月10日”,     “2015年2月11日”,     “16/11/2015”,     “2015年8月12日”,     “25/12/2015”,     “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
}

2 个答案:

答案 0 :(得分:4)

请尝试arrayValue

,而不是致电object
if let haystack = jsonData["holidays"].object as? [String] {
    let needle = "01/01/2015"
    if contains(haystack, needle) {
        return true
    }
}

答案 1 :(得分:0)

您的代码应运行正常,请参见下图,可能您的数组类型应为Array<String>

enter image description here