нужна помощь в добавлении двумерного массива - PullRequest
0 голосов
/ 11 марта 2020

почему вторая строка не работает?

twoDWeeksArray.append (ExpandableWeeks (isExpanded: true, даты: ([daysArray [0]])))

twoDWeeksArray [0]. append (ExpandableWeeks (isExpanded: true, даты: ([daysArray [x]])))

выдает эту ошибку:

Значение типа 'ExpandableWeeks' не имеет члена 'append'

я пытаюсь добавить 2d массив дат, сгруппированных по году

struct ExpandableWeeks { 
    var isExpanded: Bool = true 
    var dates: [Date] 
}

вот мое веселье c:

func getTwoDWeeksArray() {

        twoDWeeksArray.removeAll()
        let dateFormatter = DateFormatter()
        dateFormatter.dateFormat = "yyyy"

        var firstYear = dateFormatter.string(from: dailyEntry[0].date!)
        var tempEntry = ""
        var z = 0

        twoDWeeksArray.append(ExpandableWeeks(dates: ([weeksArray[0]])))
        if weeksArray.count == 1 {
             return
        }

        for x in 1...weeksArray.count-1 {
            tempEntry = dateFormatter.string(from: weeksArray[x])
            if tempEntry == firstYear {
                twoDWeeksArray[z].append(ExpandableWeeks( dates: ([weeksArray[x]])))
            } else {
                firstYear = tempEntry
                twoDWeeksArray.append(ExpandableWeeks(isExpanded: true, dates: ([weeksArray[x]])))
                z = z + 1
            }
       }
}

1 Ответ

1 голос
/ 11 марта 2020

Вы не показали свое объявление для twoDWeeksArray, поэтому я могу только предположить, что оно не объявлено как двумерный массив.

Вот рабочий пример использования вашей структуры, хотя я думаю, что, возможно, ваш определяемые типы неоправданно сложны:

struct ExpandableWeeks {
    var isExpanded: Bool = true
    var dates: [Date]
}

var myDates = [Date(), Date()]

var twoDWeeksArray: [[ExpandableWeeks]] = [] // 2D Array declaration

// Append works here because it is declared as a 2D array
twoDWeeksArray.append( [ExpandableWeeks(isExpanded: true, dates: myDates )] )    
twoDWeeksArray[0].append( ExpandableWeeks(isExpanded: true, dates: myDates ))

print(twoDWeeksArray.count)
print(twoDWeeksArray[0].count)

// accessing the 2D Array's elements
print(twoDWeeksArray[0][0])
print(twoDWeeksArray[0][1])

Вывод журнала:

1
2
ExpandableWeeks(isExpanded: true, dates: [2020-03-11 01:05:06 +0000, 2020-03-11 01:05:06 +0000])
ExpandableWeeks(isExpanded: true, dates: [2020-03-11 01:05:06 +0000, 2020-03-11 01:05:06 +0000])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...