2014-12-29 55 views
1

我試圖使用包含在swift中查找數組上的值,但是當我使用變量作爲謂詞時,我得到'字符串不能轉換爲'S. Generator.Element」。如何使用包含在swiftyJSON對象

任何人都可以解釋這是什麼意思,爲什麼發生?

這是原來的JSON,加載和分析使用swiftyJSON:

{ 「假期」:[ 「2015年1月1日」, 「2015年12月1日」, 「23/03/2015「, 」02/04/2014「, 」03/04/2015「, 」01/05/2015「, 」18/05/2015「, 」08/06/2015「, 「2015年6月15日」, 「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 
} 

回答

3

與其說arrayValue,儘量object

if let haystack = jsonData["holidays"].object as? [String] { 
    let needle = "01/01/2015" 
    if contains(haystack, needle) { 
     return true 
    } 
} 
+0

它的工作原理,謝謝!我假設arrayValue會像[String]一樣返回一個數組。但它似乎沒有。什麼時候應該使用arrayValue或dictionaryValue呢? – afterxleep

+0

@afterxleep'arrayValue'返回'[JSON]':具體來說,它返回'map(self.object as [AnyObject]){JSON($ 0)}'。 –

0

您的代碼應低於運行正常,看圖像,而且很可能你數組類型應該是Array<String>

enter image description here

+0

是啊,這樣的作品,但原來的數組使用swiftyJSON文件加載,這就是爲什麼我把它聲明爲數組這是解析後從swiftyJSON返回的JSON對象。在這種情況下,它不起作用。 – afterxleep