2016-02-26 7 views
0

Я словарь заявил так:Как инициализировать массив внутри словаря?

var myDict = [Int : [Int]]() 

Массив в нем не инициализируется, поэтому каждый раз, когда я должен проверить его первый:

if (myDict[idx] == nil) { 
    myDict[idx] = [] 
} 

Как инициализировать его как пустой массив в объявлении MyDict?

+0

Я считаю, что вы просто не привязывали значение к этому ключу 'idx'. –

ответ

1

Я думаю, вы могли бы что-то недопонимание довольно ключ - давайте удостоверимся:

Путь словарь работает, не иметь один массив, а массив для каждый ключ.

Каждое значение «idx» запрашивает массив для возврата разных массива.

Вы не можете ожидать возвращения пустого массива - словарь означает, чтобы вернуть значение nil для ключа, который не был установлен. Чтобы сделать то, что вы пытаетесь, следующее, вероятно, сделало бы трюк:

myDict[idx] = myDict[idx] ?? [] 
0

Вы можете инициализировать его таким образом

myDict.forEach { 
    (var dictElement) ->() in 
    dictElement.1 = [Int]() 
} 
0

Вот что СЛОВАРЬ делать, если вы пытаетесь получить ключ, для которого значение не существует. Вы можете подклассифицировать словарь и переопределить функциональность индекса, чтобы получить то, что вы хотите, как this. Или просто напишите расширение, или напишите опровержение оператора, чтобы использовать другой символ.

«Вы также можете использовать синтаксис подстроки для извлечения значения из словаря для определенного ключа. Поскольку можно запросить ключ, для которого не существует никакого значения, индекс словаря возвращает необязательное значение типа значения словаря. "

Выписка от: Apple Inc." Язык быстрого программирования (Swift 2.1). "IBooks. https://itunes.apple.com/cn/book/swift-programming-language/id881256329?l=en&mt=11