title: Ambiguous use of 'subscript' - ios 9 Swift 2.0
body: <p>I was writing ios app using Swift 2.0 on xcode 7.0. Before updating to the last version of xCode 7.1 the same exact code was working perfectly</p>
  
  <p>After the update i got this error:</p>
  
  <blockquote>
    <p>Ambiguous use of 'subscript'</p>
  </blockquote>
  
  <p>in those lines:</p>
  
  <pre><code>  override func layoutAttributesForItemAtIndexPath(indexPath: NSIndexPath) -&gt; (UICollectionViewLayoutAttributes!) {
      return self.itemAttributes[indexPath.section][indexPath.row] as! UICollectionViewLayoutAttributes
    }
  </code></pre>
  
  <p>this is the full class:</p>
  
  <pre><code>class CustomCollectionViewLayout: UICollectionViewLayout {
  
    var numberOfColumns = 7 // the number of columns
    var itemAttributes : NSMutableArray!
    var itemsSize : NSMutableArray!
    var contentSize : CGSize!
  
    func setColumnNumber(columnNum: Int) {
      numberOfColumns = columnNum
    }
  
    override func prepareLayout() {
      if self.collectionView?.numberOfSections() == 0 {
        return
      }
  
      if (self.itemAttributes != nil &amp;&amp; self.itemAttributes.count &gt; 0) {
        for section in 0..&lt;self.collectionView!.numberOfSections() {
          let numberOfItems : Int = self.collectionView!.numberOfItemsInSection(section)
          for index in 0..&lt;numberOfItems {
            if section != 0 &amp;&amp; index != 0 {
              continue
            }
  
            let attributes : UICollectionViewLayoutAttributes = self.layoutAttributesForItemAtIndexPath(NSIndexPath(forItem: index, inSection: section))
            if section == 0 {
              var frame = attributes.frame
              frame.origin.y = self.collectionView!.contentOffset.y
              attributes.frame = frame
            }
  
            if index == 0 {
              var frame = attributes.frame
              frame.origin.x = self.collectionView!.contentOffset.x
              attributes.frame = frame
            }
          }
        }
        return
      }
  
      if (self.itemsSize == nil || self.itemsSize.count != numberOfColumns) {
        self.calculateItemsSize()
      }
  
      var column = 0
      var xOffset : CGFloat = 0
      var yOffset : CGFloat = 0
      var contentWidth : CGFloat = 0
      var contentHeight : CGFloat = 0
  
      for section in 0..&lt;self.collectionView!.numberOfSections() {
        let sectionAttributes = NSMutableArray()
  
        for index in 0..&lt;numberOfColumns {
          let itemSize = self.itemsSize[index].CGSizeValue()
          let indexPath = NSIndexPath(forItem: index, inSection: section)
          let attributes = UICollectionViewLayoutAttributes(forCellWithIndexPath: indexPath)
          attributes.frame = CGRectIntegral(CGRectMake(xOffset, yOffset, itemSize.width, itemSize.height))
  
          if section == 0 &amp;&amp; index == 0 {
            attributes.zIndex = 1024;
          } else  if section == 0 || index == 0 {
            attributes.zIndex = 1023
          }
  
          if section == 0 {
            var frame = attributes.frame
            frame.origin.y = self.collectionView!.contentOffset.y
            attributes.frame = frame
          }
          if index == 0 {
            var frame = attributes.frame
            frame.origin.x = self.collectionView!.contentOffset.x
            attributes.frame = frame
          }
  
          sectionAttributes.addObject(attributes)
  
          xOffset += itemSize.width
          column++
  
          if column == numberOfColumns {
            if xOffset &gt; contentWidth {
              contentWidth = xOffset
            }
  
            column = 0
            xOffset = 0
            yOffset += itemSize.height
          }
        }
        if (self.itemAttributes == nil) {
          self.itemAttributes = NSMutableArray(capacity: self.collectionView!.numberOfSections())
        }
        self.itemAttributes .addObject(sectionAttributes)
      }
  
      let attributes : UICollectionViewLayoutAttributes = self.itemAttributes.lastObject?.lastObject as! UICollectionViewLayoutAttributes
      contentHeight = attributes.frame.origin.y + attributes.frame.size.height
      if( contentWidth == 0 || contentHeight == 0){return;}
      self.contentSize = CGSizeMake(contentWidth, contentHeight)
    }
  
    override func collectionViewContentSize() -&gt; CGSize {
      if( self.contentSize != nil){
        return self.contentSize
      }else {
        return CGSizeMake(0, 0)
      }
    }
  
    override func layoutAttributesForItemAtIndexPath(indexPath: NSIndexPath) -&gt; (UICollectionViewLayoutAttributes!) {
      return self.itemAttributes[indexPath.section][indexPath.row] as! UICollectionViewLayoutAttributes
    }
  
    override func layoutAttributesForElementsInRect(rect: CGRect) -&gt; [UICollectionViewLayoutAttributes]? {
      var attributes = [UICollectionViewLayoutAttributes]()
      if self.itemAttributes != nil {
        for section in self.itemAttributes {
  
          let filteredArray  =  section.filteredArrayUsingPredicate(
  
            NSPredicate(block: { (evaluatedObject, bindings) -&gt; Bool in
              return CGRectIntersectsRect(rect, evaluatedObject.frame)
            })
            ) as! [UICollectionViewLayoutAttributes]
  
  
          attributes.appendContentsOf(filteredArray)
  
        }
      }
  
      return attributes
    }
  
    override func shouldInvalidateLayoutForBoundsChange(newBounds: CGRect) -&gt; Bool {
      return true
    }
  
    func sizeForItemWithColumnIndex(columnIndex: Int) -&gt; CGSize {
      let text : String = "25.10.15"
      let size : CGSize = (text as NSString).sizeWithAttributes([NSFontAttributeName: UIFont.systemFontOfSize(17.0)])
      let width : CGFloat = size.width + 25
      return CGSizeMake(width, 30)
    }
  
    func calculateItemsSize() {
      self.itemsSize = NSMutableArray(capacity: numberOfColumns)
      for index in 0..&lt;numberOfColumns {
        self.itemsSize.addObject(NSValue(CGSize: self.sizeForItemWithColumnIndex(index)))
      }
    }
  }
  </code></pre>
  
  <p><a href="https://github.com/brightec/CustomCollectionViewLayout/blob/master/CustomCollectionLayout/CustomCollectionViewLayout.swift" rel="noreferrer">The original library</a></p>