快速加载两个集合视图和一个表视图的核心数据

Posted

技术标签:

【中文标题】快速加载两个集合视图和一个表视图的核心数据【英文标题】:Loading coredata for two collection views and one table view in swift 【发布时间】:2015-09-28 06:53:39 【问题描述】:

所以我有这个问题,我必须在两个集合视图和一个表视图上加载一个实体。问题是,主要我只需要在 tableview 所在的 VC 上加载一个实体。该数据实体具有以下参数,即:

发动机类型(柴油或汽油) 汽车颜色 最大速度 生产年份

现在,重点是,根据汽车引擎的类型为 tableview 上的单元格着色。因此,如果数据实体“汽车”的布尔值为“isEngineDiesel”=true,则单元格将为橙色,如果为 false,则为浅蓝色。这工作得很好,一个简单的 if 语句,用于加载此类单元格的表视图委托方法。但是,现在我必须实现另一个具有两个集合视图的 VC,其中第一个仅加载柴油引擎汽车实体,另一个是汽油类型。 所以我想这个问题在这里已经很清楚了。我怎样才能做到这一点?因为经过无数小时的试验,我唯一的想法是两个制作两个实体,一个是 DieselCar,另一个是 PetrolCar。但这意味着要更改完整的数据结构,而且实际上我需要两个而不是一个表视图,这似乎不是一个好主意,因为它会“溢出”所有数据。

那么...有什么想法吗?

编辑:

到目前为止,我只设法获得了单元格标题,但单元格数量的返回值仍然是如何解决的一个谜。 集合视图委托的代码:

func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell 

    let cell = collectionView.dequeueReusableCellWithReuseIdentifier("cell", forIndexPath: indexPath) as! CollectionViewCell
    if let carData = fetchedResultsController?.objectAtIndexPath(indexPath) as? Car 

    cell.layer.cornerRadius = 20
    cell.layer.masksToBounds = true


        if collectionView == collectionViewDiesel 
            if carData.isEngineDiesel == true 
                cell.backgroundColor = UIColor(netHex: 0x8DF060)
                // Display the cell name

                cell.cellTitle.text = carData.cellTitle
            
        else if collectionView == collectionViewPetrol 
            if carData.isCarDiesel == false 
                cell.backgroundColor = UIColor(netHex: 0xEB9B2D)
                // Display the cell name

                cell.cellTitle.text = carData.cellTitle
            
        
    
    return cell

这是我需要回答的方法:

func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int 

    return 5

【问题讨论】:

【参考方案1】:

在另一个 VC 上,您需要两个集合视图的数据结构,因此我认为如果 true 在一个数组中添加对象并且如果在另一个数组中为 false 则为相应的柴油和汽油钥匙。 在您的集合视图委托中,始终有一个 UICollectionView 参数对其进行检查(如果您有出口,您可以使用标签甚至 == 运算符)根据键从字典加载数据。

【讨论】:

嗯,是的,我想到了,但由于它是一个大型实体,因此非常感谢您提供示例代码。加上记录以防其他人遇到此问题。 如果它是一个大实体,您可以使用谓词直接加载相应数组中的数据 我可以发布带有示例数据的集合视图委托函数示例,但不能发布整个场景 样品就可以了,其他的我都有 :)

以上是关于快速加载两个集合视图和一个表视图的核心数据的主要内容,如果未能解决你的问题,请参考以下文章

从另一个视图重新加载表视图

删除或插入核心数据后表视图未加载

是否可以快速显示表格视图单元格索引路径和集合视图索引路径?

从另一个视图类重新加载集合视图数据

将核心数据加载到数组中,然后填充表视图,重新排序数组对象不会持久

无法在表格视图中加载核心数据?