我正在尝试使用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
}
答案 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>
。