Хотя ваш вопрос может быть дубликатом: Переменная p, переданная по ссылке перед инициализацией , я постараюсь опубликовать описательный ответ на ваш случай.
То, что вы сделали до сих пор, реализовав:
var allSetsOfCards: [[Int]]
- это просто объявление переменной без инициализация it .Итак, что вам нужно сделать, это инициализировать его перед использованием, у вас будет несколько вариантов сделать это, вы можете просто сделать это так:
var allSetsOfCards = [[Int]]()
Это было бы хорошо, если вы уверены, чточто allSetsOfCards
будет использоваться всегда.
Иногда вашему приложению не нужно будет работать с ним, например, представьте, что вам нужно будет заполнить allSetsOfCards
, если только определенные условия имеют / имеютесли его применить, то его инициализация будет бессмысленной (это бесполезная трата памяти), в этот момент вы можете объявить ее как ленивое свойство :
lazy var allSetsOfCards = [[Int]]()
при условии, что allSetsOfCards
является свойством структуры или класса, в этот момент оно не будет инициализировано, если вам не нужно его использовать.
Примечание:
Кроме того, вы должны убедиться, что внутренние массивы также уже инициализированы, например:
var allSetsOfCards = [[Int]]()
// that's what I mean:
var firstSet = [Int]()
allSetsOfCards.append(firstSet)
// assuming that `setNumber` is 0 so far...
var setNumber = 0
allSetsOfCards[setNumber].append(i)
allSetsOfCards[setNumber].append(j)
allSetsOfCards[setNumber].append(k)
// OR (as shorter option):
allSetsOfCards[setNumber].append([i, j, k])
Знаете ли вы, Swift делает имеет Наборы ?Возможно, вы захотите вместо allSetsOfCards
быть массивом множеств ([Set<Int>]()
) instead.