Advertisement
Guest User

Untitled

a guest
Dec 7th, 2016
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Swift 1.31 KB | None | 0 0
  1. extension FeatureItem {
  2.     var isInCollection: Bool { return true }
  3.     var isCollection: Bool { return false }
  4.     var icon: String? { return nil }
  5. }
  6.  
  7. protocol FeatureCollectionItem: FeatureItem {
  8.     var prefersInlineDisplay: Bool { get }
  9.    
  10.     var count: Int { get }
  11.     subscript(index: Int) -> FeatureItem { get }
  12. }
  13.  
  14. extension FeatureCollectionItem {
  15.     var isCollection: Bool { return true }
  16.     var prefersInlineDisplay: Bool { return false }
  17. }
  18.  
  19. struct FeatureItemList<ItemDataSource: DataSource>: FeatureCollectionItem where ItemDataSource.Item == FeatureItem {
  20.     let key: FeatureItemKey
  21.     let title: String
  22.     let icon: String?
  23.     private let items: ItemDataSource
  24.    
  25.     init(title: String, key: FeatureItemKey, icon: String? = nil, items: ItemDataSource) {
  26.         self.title = title
  27.         self.key = key
  28.         self.icon = icon
  29.         self.items = items
  30.     }
  31.    
  32.     var count: Int {
  33.         return self.items.numberOfItems
  34.     }
  35.    
  36.     subscript(index: Int) -> FeatureItem {
  37.         return self.items.item(at: index)
  38.     }
  39. }
  40.  
  41. extension FeatureItemList: Collection {
  42.     var startIndex: Int {
  43.         return 0
  44.     }
  45.    
  46.     var endIndex: Int {
  47.         return self.numberOfItems
  48.     }
  49.    
  50.     func index(after i: Int) -> Int {
  51.         return i + 1
  52.     }
  53. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement