2016-10-28 10 views
0

これらのjsonオブジェクトをどのようにフィルタリングできますか?私は可能な限りダウンタイプをキャストしてくださいIDがこれはjsonオブジェクトを迅速にフィルタリングする方法は?

{ 
    patients =  (
       { 
      city = "\U0411\U0430\U044f\U043d\U0445\U043e\U043d\U0433\U043e\U0440"; 
      district = "\U0411\U0430\U044f\U043d\U0445\U043e\U043d\U0433\U043e\U0440"; 
      firstname = fdfsdf; 
      lastname = dsfgsdfg; 
      "patient_id" = 1064; 
      "patient_status" = 3; 
      "register_id" = "\U0430\U043083040411"; 
     } 
       { 
      city = "\U0411\U0430\U044f\U043d\U0445\U043e\U043d\U0433\U043e\U0440"; 
      district = "\U0411\U0430\U044f\U043d\U0445\U043e\U043d\U0433\U043e\U0440"; 
      firstname = dwfw; 
      lastname = dsfsdf; 
      "patient_id" = 1056; 
      "patient_status" = 1; 
      "register_id" = "\U0443\U044399111134"; 
     } 
} 
+0

'もしlet pats = obj [" patients "]を[String:Any] {patients = pats.filter {$ 0.patient_id == 3}}'なのか? – Larme

答えて

2

私の印刷された変数である3

var patients: Array<AnyObject>? if let obj: AnyObject = manager?.responseObject as AnyObject? { 
      if let pats = obj["patients"] as! Array<AnyObject>? { 
       patients = pats 
      } 
     } 

に等しい患者のみを印刷したいわけ。

すべてのタイプはAnyObjectより具体的です。JSON辞書は常に[String:AnyObject]であり、JSON配列はArray<[String:AnyObject]>です。配列に別の配列が含まれているか、またはより多く入れ子になっている場合にのみArray<AnyObject>を使用してください。

filter機能を持つ患者をフィルタリングします。

var patients = Array<[String:AnyObject]>() 

if let obj = manager?.responseObject as? [String:AnyObject] { 
    if let pats = obj["patients"] as? Array<[String:AnyObject]> { 
     patients = pats.filter { $0["patient_status"] as! Int == 3 } 
    } 
} 

注:スウィフト3 AnyObjectAnyに置き換えられました。

+0

大変ありがとうございます –

関連する問題