2016-03-18 1 views
0

Я хочу UICollectionViewCell быть удалены, когда кнопка удаления сливают:Фатальная ошибка: неожиданно нашли ноль в то время как разворачивание необязательное значение внутри объекта

@IBAction func deleteButtonClicked() { 

    error here: delegate?.deleteTrigger(clothes!) 

} 

одежды:

var clothes: Clothes? { 
     didSet { 

      updateUI() 
     } 
    } 

func deleteTrigger: 

func deleteTrigger(clothes: Clothes){ 

     let appDel: AppDelegate = UIApplication.sharedApplication().delegate as! AppDelegate 

     let context: NSManagedObjectContext = appDel.managedObjectContext! 
     let en = NSEntityDescription.entityForName("Category", inManagedObjectContext: context) 


     if let entity = NSEntityDescription.entityForName("Category", inManagedObjectContext: context) { 



     let indexPath = NSIndexPath() 

     //var cat : Category = clothing as! Category 
     let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate 
     let managedContext: NSManagedObjectContext = appDelegate.managedObjectContext! 
     let fetchRequest = NSFetchRequest(entityName: "Clothes") 

     let predicate = NSPredicate(format: "category == %@", self.selectedCategory!) 
     fetchRequest.predicate = predicate 

     var error: NSError? = nil 
     var clothesArray = managedContext.executeFetchRequest(fetchRequest, error: &error)! 
     managedContext.deleteObject(clothesArray[indexPath.row] as! NSManagedObject) 
     clothesArray.removeAtIndex(indexPath.row) 
     self.collectionView?.deleteItemsAtIndexPaths([indexPath]) 

     if (!managedContext.save(&error)) { 
      abort() 


     } 

     } 

Одежда является в основных данных. Кто-нибудь знает, почему я получаю эту ошибку? Я пытаюсь удалить collectionViewCell из основных данных с помощью отношения «один ко многим». Категория - это материнская организация, а Одежда - это объект в категории.

+0

Вы говорите «делегировать ?.deleteTrigger (одежда!)» - всякий раз, когда вы используете восклицательный знак, вы просите об аварии. Вот что восклицательный знак _means_ в Свифте. Вы рухнули. Никакого большого удивления. Если вы этого не хотите, не делайте этого. – matt

ответ

0

Как и другие, ваше значение равно нулю. Вам нужно развернуть переменную, прежде чем вы сможете что-либо сделать с ней. Попробуйте следующее:

@IBAction func deleteButtonClicked() 
{ 
    if var clothes = clothes 
    { 
    delegate?.deleteTrigger(clothes) 
    } 
} 
1

Вы объявили свойство clothes:

var clothes: Clothes? 

Вы никогда не дал ему никакого значения, поэтому nil. Таким образом, когда вы принудительно разворачиваете его, говоря clothes!, вы крушите.

+0

Я по-прежнему получаю ту же ошибку, когда меняю одежду для варки: Одежда? для одежды: Одежда! и когда я меняю делегат ?.deleteTrigger (одежда!) делегировать? .deleteTrigger (одежда) @matt –

+0

Это меня не удивляет. Вы _still_, не придавая этой переменной какое-либо значение. Все, что вы делали, - это восклицательный знак. – matt

Смежные вопросы

 Смежные вопросы