Arrays 需要帮助附加二维数组吗
为什么第二行不行 追加(ExpandableWeeksArray(isExpanded:true,dates:([weeksArray[0]])) twoDWeeksArray[0]。追加(ExpandableWeeks(isExpanded:true,dates:([weeksArray[x]])) 它给了我这个错误: “ExpandableWeeks”类型的值没有成员“append”Arrays 需要帮助附加二维数组吗,arrays,swift,struct,append,2d,Arrays,Swift,Struct,Append,2d,为什么第二行不行 追加(ExpandableWeeksArray(isExpanded:true,dates:([weeksArray[0]])) twoDWeeksArray[0]。追加(ExpandableWeeks(isExpanded:true,dates:([weeksArray[x]])) 它给了我这个错误: “ExpandableWeeks”类型的值没有成员“append” 我试图附加一个按年份分组的二维日期数组 struct ExpandableWeeks { var
我试图附加一个按年份分组的二维日期数组
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])
是否尝试附加到
.dates
?显示twoDWeeksArray的代码声明。我尝试附加一个2d数组--twoDWeeksArray,其类型为从weeks数组馈送的日期。在我将struct ExpandableWeeks应用于它之前,它一直在工作。请显示struct ExpandableWeeks
的代码和var twoDWeeksArray
struct ExpandableWeeks{var isExpanded:Bool=true var dates:[Date]}var twoDWeeksArray=[ExpandableWeeks(isExpanded:true,dates:[Date]())让我试着将其声明为您的方式注意:在我的示例中,我用双方括号声明了twoDWeeksArray
。基本上,方括号的数量决定了数组中的维数。您的声明意味着您的twoDWeeksArray
只是类型为ExpandableWeeks
的1D数组。var twoDWeeksArray=[[Date]]()。这就是我在添加结构之前声明它的方式,然后我不得不更改它来处理有人建议的新结构,它成功了。我确实有额外的括号,不是吗?实际上,您的原始声明是一个2D数组。您的问题特别询问了为什么追加行twoDWeeksArray[0].append(ExpandableWeeks(isExpanded:true,dates:([weeksArray[x]]))
不起作用。这就是你的答案。当您将声明从二维数组更改为一维数组时,该行代码停止工作。您必须决定要使用的实现,并从那里开始工作。