Swift – итерация массива словарей

Попытка найти название каждой книги:

var error: NSError? let path = NSBundle.mainBundle().pathForResource("books", ofType: "json") let jsonData = NSData.dataWithContentsOfFile(path, options: .DataReadingMappedIfSafe, error: nil) let jsonDict = NSJSONSerialization.JSONObjectWithData(jsonData, options: nil, error: &error) as NSDictionary let books = jsonDict["book"] var bookTitles:[String] //for bookDict:Dictionary in books { // println("title: \(bookDict["title"])") //} 

Когда я раскомментирую эти последние три строки, все ад прорывается в Xcode6 beta3 – весь текст становится белым, я получаю постоянные всплывающие окна «SourceKitService Terminated» и «Временные ограничения редактора», и я получаю эти полезные ошибки сборки:

 <unknown>:0: error: unable to execute command: Segmentation fault: 11 <unknown>:0: error: swift frontend command failed due to signal 

Я серьезно оскорбил компилятор здесь. Итак, каков правильный способ итерации по массиву словарей и найти свойство «title» каждого dict?

One Solution collect form web for “Swift – итерация массива словарей”

У вас проблемы, потому что Swift не может сделать вывод о том, что книги являются итерируемыми. Если вы знаете тип массива, вы должны явно указывать на этот тип. Если, например, массив должен быть массивом словарей, которые имеют строки как объекты и ключи, вы должны сделать следующее.

 if let books = jsonDict["book"] as? [[String:String]] { for bookDict in books { let title = bookDict["title"] println("title: \(title)") } } 

Также обратите внимание, что вам нужно удалить доступ к словарю под индексом из интерполяции строк, поскольку он содержит кавычки. Вам просто нужно сделать это на двух строках.

  • Изменение UITabBarItem Un-selected Color Tint - Swift
  • UIColor не работает с значениями RGBA
  • Дважды заполняющая решетка Firebase - Swift
  • Разница между frame.size.width и frame.width
  • LGSideMenuController: Регистрация нескольких локальных push-уведомлений приводит к задержке в обработке экрана
  • Как связать Swift String с Objective C NSString?
  • Swift - Как удалить десятичное число из float, если десятичное число равно 0?
  • MPNowPlayingInfoPropertyElapsedPlaybackTime неправильно настроен
  • Как реализовать didReceiveMemoryWarning в Swift?
  • iOS: Как активировать стабилизацию изображения на AVCaptureSession?
  • NSURLSession "Ошибка загрузки HTTP kCFStreamErrorDomainSSL, -9813; Сертификат самоподписывания
  • Interesting Posts

    Недостаток автоопределения: ограничения для ScrollView с помощью WebView и заголовка / нижнего колонтитула

    UIScrollViewKeyboardDismissModeInteractive изменение высоты таблицы с клавиатурой

    Отображать SVG-файл и аннотацию отображения поверх SVG-файла в iOS

    как программно найти размер моего приложения iphone?

    Unarchived Node не появляется при добавлении родителя в SpriteKit

    Остановить SKSpriteNode от просмотра (Swift)

    Как я могу непрерывно воспроизводить фоновую музыку при переключении на разные виды с помощью быстрого?

    ios page curl для отображения контроллера просмотра

    Проблемы с расширением Widget Today

    Делегировать текст из TextField между представлениями контейнера

    Swift – производительность – сравнение двух массивов и различие в каждом и общее в обоих

    EXC_BAD_ACCESS, код 1, iOS 7.0.x 64-разрядные устройства

    Как обнаружить устройства iOS, когда кабель подключен или нет (без добавления USB для зарядки)

    iphone – как я могу получить высоту и ширину uiimage

    Использование ZBar для сканирования штрих-кодов VIN добавляет дополнительный символ «I»

    PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.