Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 需要帮助附加二维数组吗_Arrays_Swift_Struct_Append_2d - Fatal编程技术网

Arrays 需要帮助附加二维数组吗

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

为什么第二行不行

追加(ExpandableWeeksArray(isExpanded:true,dates:([weeksArray[0]]))

twoDWeeksArray[0]。追加(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])

是否尝试附加到
.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]]))
不起作用。这就是你的答案。当您将声明从二维数组更改为一维数组时,该行代码停止工作。您必须决定要使用的实现,并从那里开始工作。