2015-04-01 3 views
1

Я хочу создать массив, содержащий массивы, некоторые из них имеют двойные, некоторые из них.Массив массивов в Swift

Это не работает:

var arrayZero = [1,2,3] 
var arrayOne = [4.0,5.0,6.0] 

var arrayofArrayZeroandOne: [[AnyObject]] = arrayZero.append(arrayOne) 

Как я могу добавить массивы в массив, так что я могу получить 5.0, если я пишу arrayofArrayZeroandOne [1] [1]?

ответ

4

I Would воспользуйтесь безопасностью типа Swift. Переход на любой маршрут может привести к ошибкам, если вы не будете осторожно добавлять и извлекать из массива.

var numbers = Array<Array<NSNumber>>() // A bit clearer IMO 
var numbers = [[NSNumber]]()   // Another way to declare 
numbers.append(arrayZero) 
numbers.append(arrayOne) 

Тогда, когда вы делаете что-то вроде

let five = numbers[1][1] // will be 5.0 

Вы знаете, что это будет типа NSNumber. Далее Свифт не позволит вам положить что-нибудь еще в массив, если это не NSNumber

Без присоединяет Раствор

var numbers = Array<Array<NSNumber>>() [ 
    [1,2,3,4], 
    [1.0,2.0,3.0,4.0] 
] 
+0

Отлично, это самый близкий ответ к тому, что я просил - Спасибо всем вам! – KML

+0

В вашем примере, если я попытаюсь добавить числа [10] = [8,9,10] f или пример. Я получаю сообщение об ошибке. Я предполагаю, что это потому, что он еще не был инициализирован таким же размером, поэтому еще нет места для индекса = 10. Но как я могу это сделать, инициализируйте массив, чтобы хранить таблицы tableViewRows.count .. массивы? – KML

+0

Ну, вам нужно будет выполнить цикл над количеством строк в таблицеView и добавить больше массивов NSNumbers – aahrens

1

Вы ищете [[Any]] (и заметите, что append мутирует в месте):

let arrayZero = [1, 2, 3] 
let arrayOne = [4.0, 5.0, 6.0] 

let arrayofArrayZeroAndOne: [[Any]] = [arrayZero, arrayOne] 

let a = arrayofArrayZeroAndOne[0][0] // of type Any 
+0

Я получаю сообщение об ошибке, когда я делаю, что в детской площадке «Исполнение было прерван, причина: EXC_BAD_ACCESS (Код = 1, адрес = 0x1). – KML

+0

Он работает для меня с Swift 1.2 ... –

+0

У меня Xcode 6.2, не знаю, где проверить Swift – KML

1

Вам не нужно Append, вы можете построить массив непосредственно:

var arrayZero = [1, 2, 3] 
var arrayOne = [4.0, 5.0, 6.0] 
var arrayofArrayZeroandOne: [[AnyObject]] = [arrayZero, arrayOne] 

println(arrayofArrayZeroandOne[1][1]) // Prints 5 
Смежные вопросы