2017-05-30 11 views
-2

私は私がで名前を表示するには、このラインを使用していますcellForRowAtIndexPathで配列dicitionaryで配列から値を迅速に取得する方法は?

if let dict = response.result.value { 

      print(response) 

       let petListArray = dict as! NSDictionary 
      self.petListArray = petListArray["MyPets"] as! [NSMutableArray]} 

に値を取得するためのコードの下に使用していますUITableview

{ 
MyPets =  (
      { 
     breed = ""; 
     breedvaccinationrecord = ""; 
     "city_registration" = ""; 
     "date_of_birth" = ""; 
     "emergency_contacts" = ""; 
     gender = m; 
     "pet_id" = 475; 
     "pet_name" = "IOS PET"; 
     petinfo = "http://name/pet_images/"; 
     "prop_name" = ""; 
     "qr_tag" = 90909090; 
     species = Canine; 
     "vaccination_records" = ""; 
     vaccinationrecord = "http://Name/vaccination_records/"; 
     "vet_info" = ""; 
    } 
); 
} 

を示すために私の配列に以下のJSONを取得したいですテーブルセル

cell?.petName.text = self.petListArray[indexPath.row].valueForKey("pet_name") as? String 

それは

のようにクラッシュさでUILabel 10
fatal error: NSArray element failed to match the Swift Array Element type 

私は2迅速に私を助けてください、すべての事前

+0

ランダムキーの周りにクォートがないのはなぜですか? –

+0

それはサーバーからの応答であり、それはアンドロイドでうまくいきます...私はあまり知りません –

答えて

0

最初のおかげですべてのでスウィフトでない使用NSMutable...コレクション型を行うスウィフトArrayとしてpetListArrayを新たに宣言しています。

var pets = [[String:Any]]() 

ルートオブジェクトは辞書で、キーMyPetsの値がそう

キャスト、配列である:...ListArrayが冗長であるネーミング、私はどちらかpetListまたはpetArrayまたは単にpetsをお勧めしますところで

if let result = response.result.value as? [String:Any], 
    let myPets = result["MyPets"] as? [[String:Any]] { 
     self.pets = myPets 
} 

書き込みcellForRow

let pet = self.pets[indexPath.row] 
cell?.petName.text = pet["pet_name"] as? String 

カスタムクラスまたは構造体をモデルとして使用することを強くお勧めします。これは、多くの型キャストを避けます。

関連する問題