我有一个从某些对象构建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之前以某种方式转换这些数据。