2016-04-23 17 views
1

あるオブジェクトに配列であるが、他のオブジェクトでは単独の値を持つJSONファイルを読んでいます。Swift:配列の辞書オブジェクト型を確認する

{ 
    "trucks":[ 
     { 
      "name":"Red Truck", 
      "colour":"Red" 
     }, 
     { 
      "name":"Blue-Silver Truck", 
      "colour":[ 
         "blue", 
         "silver" 
      ] 
     } 
} 

JSONを辞書にプルしています。

if let path = NSBundle.mainBundle().pathForResource("theFile", ofType: "json") 
    { 
     do 
     { 
      let jsonData = try NSData(contentsOfFile: path, options: NSDataReadingOptions.DataReadingMappedIfSafe) 
      do 
      { // NSJSONReadingOptions.MutableContainers 
       let jsonResult: NSDictionary = try NSJSONSerialization.JSONObjectWithData(jsonData, options: NSJSONReadingOptions.AllowFragments) as! NSDictionary 
       if let trucks : [NSDictionary] = jsonResult["trucks"] as? [NSDictionary] 
       { 
        for truck: NSDictionary in trucks 
        { 

辞書にあるオブジェクトの種類を迅速に判断する方法はありますか?

おかげ

グレッグ

答えて

4

はい、あなたはこのように、オプションの結合およびダウンキャストを使用することができます。

if let trucks = jsonResult["trucks"] as? [[String:AnyObject]] { 
    for truck in trucks { 
     if let colourString = truck["colour"] as? String { 
      // it's a String 
     } else if let colourArray = truck["colour"] as? [String] { 
      // it's an Array of Strings 
     } else { 
      // it's something else or nil 
     } 
    } 
} 
+0

はどういたしまして –

+0

コードをありがとうございました。 – Moritz

関連する問題