需要帮助附加二维数组

时间:2020-03-11 00:31:24

标签: arrays swift struct append 2d

为什么第二行不起作用?

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

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

它给了我这个错误:

“ ExpandableWeeks”类型的值没有成员“追加”

im尝试附加按年份分组的二维日期数组

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

1 个答案:

答案 0 :(得分: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])