回答

0

這裏是我的關於假設你已經擁有:

  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