Я хочу получить ниже 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, пожалуйста, помогите мне заранее поблагодарить
Прежде всего объявите 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
Он очень рекомендуется использовать пользовательский класс или структуру как модель. Это позволяет избежать многого типа литья.