创建一个Struct数组数组?

时间:2017-01-25 22:29:13

标签: arrays swift struct uicollectionview

我有一个从某些对象构建Struct数组的查询。我想将多个这些结构附加到一个数组中,以便我可以使用它填充嵌套在collectionview中的collectionview。我不确定这是最好的主意,但我所有的一切都在那里。

所以我的结构是:

struct CollectionStruct {
    var name : String
    var description : String
    var title : String
    var image : PFFile
    var id: String
}

在我的viewcontroller中,保存结构的变量是:

var packArray : [CollectionStruct] = []
var partArray : [CollectionStruct] = []

var packId = ""

所以我正在做的是使用先前创建的packArray的项来查询数据库并构建我的partArray。因为我想多次执行此操作并将partArray附加到更大的父数组中,我正在考虑使用for循环,如:

var i  = 0

for item in self.packArray as [AnyObject] {

    self.packId = self.packArray[i].id

        BuildArray.buildArrayFromQuery(queryForCollection: "Part", selectedPackID: self.packId, delegateSender: "DownloadPart", completeBlock: { (result) in

            self.partArray = result

            // append this to an array of partArray????

        })
}

我甚至不知道从哪里开始。这是个坏主意吗?

基本上我认为在cellforitem中调用这个父数组可能是这样的:

innerCell.imageCell.image = parentArray[indexPath.item].partArray[indexPath.item].image

但我可能会离开。

-----编辑-----

所以我可以在设置self.partArray后在闭包内使用多维数组:

self.partArray = result
    var parentArray = [[self.partArray]]
        parentArray.append([self.partArray])

但这在关闭之外无法使用。如何在设置self.partArray之前声明这个多维数组?

-------编辑-------

目前正在研究全局变量。

class GlobalPartArray {
    private init() { }
    static let sharedInstance = GlobalPartArray()
    var globalPartArray = [CollectionStruct]()
}
class GlobalParentArray {
    private init() { }
    static let sharedInstance = GlobalParentArray()
    var globalParentArray = [[GlobalPartArray]]()
}

然后关闭内部:

GlobalPartArray.sharedInstance.globalPartArray = result
      //can not convert [CollectionStruct] to [GlobalPartArray]
GlobalParentArray.sharedInstance.globalParentArray.append(GlobalPartArray.sharedInstance.globalPartArray)

但尝试转换时会抛出错误。我显然需要在追加到GlobalParentArray之前以某种方式转换这些数据。

0 个答案:

没有答案