2016-03-30 7 views
0

Ich habe den folgenden Code:Abwahl von Collection und Abbrechen Artikel von Array

var selectedIndexPaths = [NSDate]() 

    func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) { 

     let cell = collectionView.cellForItemAtIndexPath(indexPath) as? PartExpense 

     if cell?.selected == true { 
      cell?.layer.borderWidth = 4.0 
      cell?.layer.borderColor = UIColor.greenColor().CGColor 

      selectedIndexPaths.append(cell!.idPartecipant) 

      print(selectedIndexPaths) 


     } 
    } 

    func collectionView(collectionView: UICollectionView, didDeselectItemAtIndexPath indexPath: NSIndexPath) { 
     let cell = collectionView.cellForItemAtIndexPath(indexPath) 
     if cell?.selected == false { 
      cell?.layer.borderColor = UIColor.clearColor().CGColor 


      if let index = selectedIndexPaths.indexOf(indexPath.row) { 
       selectedIndexPaths.removeAtIndex(index) 
       print(selectedIndexPaths) 
      } 

     } 

    } 

alles gut, bis Linie geht: wenn index = selectedIndexPaths.indexOf (indexPath.row) lassen

Das ist das ist Fehler: "Wert des Typs Int kann nicht in den erwarteten Typ NSDate konvertiert werden" Wie kann ich dies erreichen? Wie kann ich ein Array konvertieren, um diesen Fehler zu vermeiden?

Antwort

0

Die Art, wie Sie das geschrieben haben, fragt alle NSDates in diesem Array nach dem Index des Datums "indexPath.row". Der Fehler besagt, dass indexPath.row ein Int und kein Datum ist. Was genau versuchst du zu tun?

+0

Ich muss in Array dieses spezielle Element IDPartecipant, die ein Nsdate mit CoreData gespeichert ist. Wenn ich die Zeile abnehme, muss das Element entfernt werden. – user1679705

+0

Suchen Sie zuerst nach dem Datum, das deaktiviert wurde, indem Sie die ursprüngliche Datenquelle nach den Daten durchsuchen (das in cellForItemAtIndexPath verwendete Array). Sobald Sie die eine, die abgewählt wurde dann für das Datum, das Sie selectedIndexPaths Array suchen, wenn deselectedData lassen: NSDate = Datasouce [indexPath.row] { wenn lassen index = selectedIndexPaths.indexOf (deselectedData) { selectedIndexPaths.removeAtIndex (index) } } –

+0

mit Ihrem Code, wenn ich abwählen manchmal ich habe diesen Fehler: "fataler Fehler: Index außerhalb des Bereichs" – user1679705