2015-09-22 3 views
1

Возможно ли иметь многомерный массив с несколькими типами данных.Swift 2D-массив с различными типами

Пример (Я хочу, чтобы последний элемент, чтобы быть Int):

var london = [[String]]() 

london[0] = ["England", "Chelmsford", 49] 
london[1] = ["Wales", "Cardiff", 212] 
london[2] = ["Scotland", "Glasgow", 556] 
london[3] = ["Germany", "Frankfurt", 640] 

ответ

6

Я думаю, что вы лучше с массивом struct или Dictionary:

struct CityInfo { 
    var country : String 
    var city : String 
    var data : Int 
} 

var london = [CityInfo]() 
london.append(CityInfo(country: "England", city: "Chelmsford", data: 49)) 
london.append(CityInfo(country: "Wales", city: "Cardiff", data: 212)) 
london.append(CityInfo(country: "Scotland", city: "Glasgow", data: 556)) 
london.append(CityInfo(country: "Germany", city: "Frankfurt", data: 640)) 

Но вы можете использовать 2D массив, если вы хотите:

var london = [[Any]]()  
london.append(["England", "Chelmsford", 49]) 
london.append(["Wales", "Cardiff", 212]) 
london.append(["Scotland", "Glasgow", 556]) 
london.append(["Germany", "Frankfurt", 640]) 
+0

Извините за мое быстрое незнание, но в чем же преимущество использования структурного подхода, пожалуйста? – ManicMorFF

+0

Вы помечены и строго типизированы данные. С 2D-массивом знание о том, что последний элемент каждого массива является «Int», неявно. Вы должны помнить позицию и тип данных при каждом использовании. –

0

используется массив с в этом массиве один из 2 вариантов

либо сделать это класс или структура, содержащая страну/город/число как свойства

или

использовать кортеж typealias MyData = (страна: String, город: String, MyNumber: Integer)

какая польза зависит от того, что вы будете делать с ним в вашем коде

0

Если вы действительно хотите это нравится, как вы это, просто использовать AnyObject как тип

var london = [[AnyObject]]() 

    london.append(["England", "Chelmsford", 49]) 
    london.append(["Wales", "Cardiff", 212]) 
    london.append(["Scotland", "Glasgow", 556]) 
    london.append(["Germany", "Frankfurt", 640]) 
+0

Ваш код выйдет из строя по двум причинам: (1) индекс из привязанного и (2) 'Int' не является объектом. –

+0

Хороший улов, но Int - объект –

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