Многомерный массив приводит к сбою Xcode6

#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.