需要帮助追加二维数组

need help appending a two dimensional array

为什么第二行不起作用?

twoDWeeksArray.append(ExpandableWeeks(isExpanded: true, dates: ([weeksArray[0]])))

twoDWeeksArray[0].append(ExpandableWeeks(isExpanded: true, dates: ([weeksArray[x]])))

它给我这个错误:

类型 'ExpandableWeeks' 的值没有成员 'append'

我正在尝试附加按年份分组的二维日期数组

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

这是我的功能:

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
            }
       }
}

您没有显示 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])