如何在CollectionView中按字母顺序显示名称

问题描述:

我有一个数组中名称的列表,我想按照字母顺序在集合视图上显示它们。还要显示每个部分的字母表,我该如何实现这一点。 Click here for Image如何在CollectionView中按字母顺序显示名称

这里是我的关于假设你已经拥有:

  1. 你有一个模型类(Model)与属性name
  2. 数据结构的UICollectionView的背后,是Model对象的数组

这里就是我想要做的:

  1. name属性对Model数组进行排序。

    sortedModels = models.sorted(by: { (first, second) -> Bool in 
        return first.title.compare(second.title) == ComparisonResult.orderedAscending 
    } 
    
  2. 创建一个新的属性来保存UICollectionView数据,其中词典键是单字母(“A”,例如),和节名称的阵列,其将包含在正确的顺序的章节。这将是在集合视图的章节标题

    var data = Dictionary<Character, [Model]>() 
    var sections = [Character] 
    
  3. 迭代通过sortedList,检查name属性的第一个字符,然后可以在字典创建一个新的数组(如果该键不存在)或加入Model现有阵列

    models.forEach { (model) in 
        let firstCharacter = model.name.characters.first! 
        if var array = data[firstCharacter] { 
         array.append(model) 
         data[firstCharacter] = array 
        } else { 
         var array = [Model]() 
         array.append(model) 
         data[firstCharacter] = array 
         sections.append(firstCharacter) 
        } 
    } 
    
  4. 那么你numberOfSectionsInCollectionView:将返回字典中键的数量

  5. collectionView:numberOfItemsInSection:会返回部分数组中的项目数
+1

请使用'first.title Sulthan