2016-11-22 6 views
0

私は以下のJSonデータをサーバーから取得しました。値の名前を抽出し、配列または辞書にモデルとして格納したいと考えています。問題は、返された値がその自己が別の辞書の形であることです。頻度、説明、量の値を抽出し、それらをテーブルビューに更新するにはどうすればよいですか?以下は私のJsonデータフォーマットです。これはサーバーのリクエストから得られます。私は、迅速かつ辞書のコンセプトに新しいですと配列は私Swift iOS9のJson Dataから値を抽出する

{ 
"payment" =  (
      { 
     amount = 100; 
     currency = USD; 
     description = "Awesome Videos"; 
     frequency = Day; 
    }, 
      { 
     amount = 500; 
     currency = USD; 
     description = "Awesome Videos"; 
     frequency = Week; 
    }, 
      { 
     amount = 3000; 
     currency = USD; 
     description = "Awesome Videos"; 
     frequency = Months; 
    } 
); 

}私は辞書や配列にローカルに保存し、私のテーブルビューにそれらを更新したい

に混乱静かです。

は、ここでまた、サーバー

let task = NSURLSession.sharedSession().dataTaskWithRequest(request) { (data, response, error) -> Void in 
     if (data != nil){ 
      print(data) 
      do { 

       // let jsonResult = try NSJSONSerialization.JSONObjectWithData(data!, options:NSJSONReadingOptions.MutableContainers) 
       let jsonResult = try NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.MutableContainers) 

       print(jsonResult) 
       print(jsonResult["payment_plans"]) 



       if let plan_list = jsonResult as? NSDictionary{ 
        print("got dictionary") 

        for (key, value) in plan_list 
        { 
         print(value) 
         print("printing keys") 
         print(key) 

         if let plans = value as? NSDictionary 
         { 
          print("printing values") 
          print(plans) 
          print(plans["currency"]) 
         } 
        } 
       } 

      } catch{ 
       print("Json Serialization failed") 
      } 
     } 

    } 
    /* 
    if (response != nil){ 
    print(response) 
    } 
    else{ 
    print(error) 
    } 
    } 
    */ 
    task.resume() 
} 

私は辞書に入る値を抽出する方法をここで立ち往生していますからデータを取得するために私のコードです。事前に感謝

答えて

0

辞書それはあなたのケースの値がAnyObject型を持つkey-valueストレージです。あなたは、あなたがfor (key, value) in plan_listを使用する場合は、それがfor (key, value) in plan_list.enumerate()

+0

私はJson Dataを取得することができました....どのように私はテーブルビューにデータを入力できますか?私の側で働かないようです。ありがとう – Arnold

+0

あなたのクラス –

+0

でプロパティ**の支払い**を作成します。申し訳ありません。すべてのデータを** payments **のプロパティに入れ、テーブルビューのdataSourceメソッドでreloadData()を呼び出すと、 'let payment = self.paymentsとして? NSDictionary {cell.label.text = payment ["description"] as?文字列} '整数もあることを忘れないでください! –

2

にです変更する必要が支払い配列

if let payments = jsonResult as? Array{ 

    *iterate here all payments 

} 

を作成

let jsonResult = try JSONSerialization.jsonObject(with: data, options: .mutableContainers) 

を使用することができますArrayDictionaryにデータを変換したりするには

こんにちは、次のように結果を繰り返すことができます:

if((jsonResult) != nil) { 
    let swiftyJsonVar = jsonResult! 
    do { 
     if let dicObj = swiftyJsonVar as? NSDictionary { 
      print("Response is dictionary") 
      print(dicObj) 
      let arrObj = dicObj["payment"] as NSArray 
      // Then iterate your arrObj and do as per your need. 
      //for eg. 
      arrObj[0]["description"] 
     } 
    } 
} 
+0

あなたはこのように使用することができます – Arnold

+0

nilのリターンを理解することができます。.. dicObj [「支払い」]のように! NSArray –

+0

私はそれを働かせました....ありがとう、あなたはどのように私は上記のデータをtableviewcellに配置することができますお勧めできますか?それは私の側で働いていないようです。ここに私のコード は 'FUNCのにtableView(のtableView:のUITableView、cellForRowAtIndexPath indexPath:NSIndexPath) - !?>のUITableViewCell { せセル= tableView.dequeueReusableCellWithIdentifier( "choosePlan"、forIndexPath:indexPath)などのUITableViewCell cell.textLabelの.text = PlanStorage [indexPath.row] return cell } ' – Arnold

関連する問題