Как получить значения из массива с помощью dicitionary в swift?

-2

Я хочу получить ниже json для моего массива для показа в 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" = "";
    }
);
}

Я использую ниже код для получения значений в массиве

if let dict = response.result.value {

            print(response)

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

in cellForRowAtIndexPath Я использую эту строку для отображения имени в UILabel в TableCell

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

но он рушится, как

fatal error: NSArray element failed to match the Swift Array Element type

я новичок в быстрой 2, пожалуйста, помогите мне заранее поблагодарить

  • 0
    Почему есть случайные ключи, которые не имеют кавычек вокруг них?
  • 0
    то есть ответ от сервера, и он прекрасно работает в Android, так что ... я не знаю много
Теги:
uitableview
nsarray

1 ответ

0

Прежде всего объявите petListArray как Swift Array, не используйте NSMutable... в Swift вообще.

Кстати, имя ...ListArray избыточно, я рекомендую либо petList либо petArray либо просто pets:

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

Корневым объектом является словарь, а значение для ключа MyPets - это массив, поэтому

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

Он очень рекомендуется использовать пользовательский класс или структуру как модель. Это позволяет избежать многого типа литья.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню