2014-12-21 2 views
0

Так у меня есть массив полного массивов словарейИтерация Массив массивов словарей

например:

var array1 = ["key1":"value1","key2":"value2"] 
var array2 = ["key1":"value1","key2":"value2"] 
var array3 = ["key1":"value1","key2":"value2"] 

** Клавиша & значения согласуются во всех массивах

то у меня есть один большой массив, содержащий эти массивы

ex:

var bigArray = [array1,array2,array3] 

Как прорежировать все с помощью цикла for for, чтобы я мог читать каждую клавишу/значение в каждом словаре в каждом массиве.

Objective-C Я мог бы легко сделать это, но я только начал с быстрым, и я получаю ошибки (я уверен, что из-за кастинга)

Сейчас у меня есть что-то вроде этого

for arr in bigArray as NSArray { 
    for dict in arr as NSDictionary { 
     var coordinates : NSString = dict["coordinate"] as NSString 
    } 
} 

Это, к сожалению, дает мне ошибки.

ответ

1

Проблема в том, что ваши 3 "массивы" на самом деле являются словарями. Вы объявляете их как список пар ключ-значение. Это означает, что ваш цикл будет просто выглядеть следующим образом:

var array1 = ["key1":"value1","key2":"value2"] 
var array2 = ["key1":"value1","key2":"value2"] 
var array3 = ["key1":"value1","key2":"value2"] 

var bigArray = [array1,array2,array3] 

for dict in bigArray { 
    var coordinates = dict["coordinate"] 
} 

Кроме того, вы заметите, что я не делал никакой отливки к типам NSArray или NSDictionary. Лучше просто придерживаться родных контейнеров Swift, поэтому вам не нужно постоянно разливать типы для других типов.

Если вы на самом деле были массивы словарей в большом массиве, он будет выглядеть следующим образом:

var array1 = [["key1":"value1"],["key2":"value2"]] 
var array2 = [["key1":"value1"],["key2":"value2"]] 
var array3 = [["key1":"value1"],["key2":"value2"]] 

var bigArray = [array1,array2,array3] 

for arr in bigArray { 
    for dict in arr { 
     var coordinates = dict["coordinate"] 
    } 
} 
+0

Спасибо за ответ, так получается второй пример того, что у меня есть, единственное, когда вы делаете второй цикл for-in, он дает ошибку «Тип AnyObject не соответствует протоколу SequenceType – Phil

+0

@Phil Затем вам нужно показать реальное объявление ваших данных. Похоже, что ваш большой массив имеет тип [AnyObject], и он не должно быть, если вы не соединяетесь с Objective-C, или у вас есть сочетание типов в массиве. – drewag

+0

Хорошо, это работает, поэтому второй цикл, который вам нужно выполнить, потому что вы не можете перебирать AnyObject ... так что было бы for dict in arr as NSArray – Phil

Смежные вопросы