Arrays 如何在Swift中与视图控制器类中的集合视图委托共享数据

Arrays 如何在Swift中与视图控制器类中的集合视图委托共享数据,arrays,swift,oop,uiviewcontroller,uicollectionview,Arrays,Swift,Oop,Uiviewcontroller,Uicollectionview,我对CollectionView的协议函数如何在ViewController类中运行遇到了一些问题。我的问题是我有一个ID为的类,它返回字符串类型 public class GroupIds { var groupIds = [String]() func setId(groups: [String]) { groupIds=groups } func getIds() -> [String] { return groupIds } 我有一个创建GroupId对象的静态变量

我对CollectionView的协议函数如何在ViewController类中运行遇到了一些问题。我的问题是我有一个ID为的类,它返回字符串类型

public class GroupIds {

var groupIds = [String]()

func setId(groups: [String])
{
    groupIds=groups
}
func getIds() -> [String]
{
return groupIds
}
我有一个创建GroupId对象的静态变量

  static var GI = GroupIds()
我有一个公共类,我可以从ViewController访问它来设置ID。在我的ViewController中的函数中,我创建并设置它们,如下所示:

 func setId()
 {
 GroupViewController.GI = GroupIds()
 GroupViewController.GI.setId(groups: self.getGroupIds(groups: groups))
 }
在另一个函数中,我访问这些ID并得到正确的响应。我是这样做的:

   @IBAction func testButton(_ sender: UIButton) {
    print(GroupViewController.GI.getIds())
}
然而,我的问题是,当我想在CollectionView委托中使用ID时,数据总是为零。这是我的尝试:

    func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
    print(GroupViewController.GI.getIds())

    return GroupViewController.GI.getIds().count
}
当我的集合视图加载并调用此函数时,它将打印一个空数组并返回0。
我的问题是如何使numberOfItemsInSection函数的行为类似于testButton,并查看存储在公共类GroupId中的值。

何时在主视图控制器中调用
setId()
?在我看来,您的数据源是在调用
setId()
方法之前设置的

setId()

func setId() {
    GroupViewController.GI = GroupIds()
    GroupViewController.GI.setId(groups: self.getGroupIds(groups: groups))
    collectionView.reloadData()
}