#swift #xcode6
#swift #xcode6
Вопрос:
У меня есть приложение, которое извлекает файл JSON. Вот вам фрагмент моего кода:
Определение массива
var photos: NSArray = []
Как я заполняю массив:
ezJson().createRequest("http://myapiurl/load", type: "GET", params: nil, completion: {(returnedObject : AnyObject?, error : NSError?)in
if returnedObject{
self.photos = returnedObject as NSArray
self.tableView.reloadData()
}
})
println(self.photos)
{
created = {
date = "2014-06-13 18:35:46";
timezone = "Europe/Madrid";
"timezone_type" = 3;
};
description = description1;
id = 3;
name = 539b286277617;
},
{
created = {
date = "2014-06-13 18:38:38";
timezone = "Europe/Madrid";
"timezone_type" = 3;
};
description = description2;
id = 4;
name = 539b290ed8577;
}
println(self.photos[0])
{
created = {
date = "2014-06-13 18:35:46";
timezone = "Europe/Madrid";
"timezone_type" = 3;
};
description = description1;
id = 3;
name = 539b286277617;
}
Проблема в том, что я не знаю, как получить определенный элемент. Я пробовал:
println(self.photos[0]) // it works
println(self.photos[0]["name"] // Xcode crash "Command /Applications/Xcode6-Beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift failed with exit code 254"
println(self.photos[0].name) // returns nil
Как я могу получить доступ к параметру name ?
Комментарии:
1. Что
println(self.photos[0]
печатает? И как вы заполняете свой массив данными JSON?2. Я обновил код, спасибо
3. Каков класс self.photos[0] ?
4. Что касается сбоя Xcode — это а) Xcode, б) бета -версия. Например, он выходит из строя при каждом вводе
[1, [2, 3]][1][1]
в playground.
Ответ №1:
Кажется, что вы приводите String
NSArray
к. Это не даст вам желаемого эффекта.
Прежде всего, если вы хотите получить доступ к своим элементам по имени, вам нужен NSDictionary
.
Тогда он, вероятно, все равно не будет работать, поскольку между типами нет неявного преобразования, поэтому вам придется либо проанализировать его самостоятельно, либо использовать какую-либо библиотеку JSON.
Последнее: ваш JSON неверен.
Комментарии:
1. спасибо, мой json был неверным, и я смог получить это с помощью библиотеки JSONKit.