Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.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
无法在Swift 4中计算或迭代结构的数组_Swift_Xcode_Swift4 - Fatal编程技术网

无法在Swift 4中计算或迭代结构的数组

无法在Swift 4中计算或迭代结构的数组,swift,xcode,swift4,Swift,Xcode,Swift4,在Swift 4中,我创建了structVybe,一个Vybe数组和一个字典 struct Vybe { let monthDay: String let category: String let description: String } var listVybe:[Vybe] = [] var dictVybe = [AnyHashable:Any]() 然后按日期字符串将其分组 self.dictVybe=Dictionary(分组

在Swift 4中,我创建了struct
Vybe
,一个
Vybe
数组和一个字典

struct Vybe {
        let monthDay: String
        let category: String
        let description: String
    }
var listVybe:[Vybe] = []
var dictVybe = [AnyHashable:Any]()
然后按日期字符串将其分组

self.dictVybe=Dictionary(分组:self.listVybe){$0.monthDay}

这使我成功地将结构分组到一个数组中。但是,我无法对该数组进行计数或迭代。尝试for循环时,我收到一个错误:
键入“Any”不符合协议“Sequence”
。如何循环或计数这组数组

一些调试打印:

 print("\(type(of: self.dictVybe["Monday, Jul 16"]!)) ,\(#function)")
 print((self.dictVybe["Monday, Jul 16"]))
输出:

数组,fetchData()

可选([VybrantApp.activityTask.Vybe(月日:“7月16日,星期一”,类别:“兴高采烈”,描述:“良好描述”), VybrantApp.activityTask.Vybe(月日:“7月16日,星期一”),类别: “快乐”,描述:“更好描述”), VybrantApp.activityTask.Vybe(月日:“7月16日,星期一”),类别: “焦虑”,描述:“伟大的描述”)])


做这件事。

将您的
dictVybe
更改为
var dictVybe=[String:[Vybe]]()
什么是
as![Vybe]
您在这里做什么?将其设置为struct数组?dictVybe的值是[Vibe]的类型,因为您是通过Dictionary(grouping:self.listVybe){$0.monthDay}创建的,所以您可以将值强制转换为[Vibe]的类型,该类型是可计数和可迭代的。参考
( dictVybe[ "Monday, Jul 16" ] as! [ Vybe ] ).count