2017-02-22 18 views
0

В моей пользовательской CollectionView ячейке у меня естьUILabel набора текст неожиданно нашел ноль в то время как разворачивание необязательного значения Swift 3

@IBOutlet weak var boardNameLabel: UILabel! 

var boardInfoDic: Dictionary? = [String : AnyObject]() 

func updateItemAtIndexPath(_ indexPath: NSIndexPath) { 

    if let string = boardInfoDic?["description"] 
     { 
      boardNameLabel.text = String(format: "%@", string as! String) 
     } 
} 

и я отправки данных в boardInfoDic из collectionViewcellForItemAt indexPath: в

let boardsCollectionViewCell = collectionView.dequeueReusableCell(withReuseIdentifier: KBoardsCollectionViewCellIdentifier, for: indexPath) as! BoardsCollectionViewCell 
boardsCollectionViewCell.boardInfoDic = self.boardsDataArray?[indexPath.item] as Dictionary<String, AnyObject>? 
boardsCollectionViewCell.updateItemAtIndexPath(indexPath as NSIndexPath) 

но я я получаю fatal error: unexpectedly found nil while unwrapping an Optional value, я был опробован несколькими способами, но не использовал. Как я могу исправить эту проблему?

Выходное соединение с UICollectionViewCell enter image description here

+0

Изменить строку 'если пусть строка = boardInfoDic? [ "Описание"], как? String', а затем просто boardNameLabel.text = string. –

+0

@NiravD У меня такая же ошибка после изменения кода также – SriKanth

+0

@NiravD обновил вопрос со ссылкой на розетку, я злюсь с прошлой ночи, чтобы исправить проблему. – SriKanth

ответ

0

Сначала проверьте ваш boardInfoDic не пуст. Используйте этот

func updateItemAtIndexPath(_ indexPath: NSIndexPath) { 

       print(boardInfoDic) 
       boardNameLabel.text = String(self.boardInfoDic["description"]!) 

} 
0

когда вы if let string = boardInfoDic?["description"] переменная string не типа String оно типа AnyObject. В результате, когда вы набрасываете string как String, он не может сделать этот тип типа, и, как результат, возвращает nil. чтобы получить строку из вашего словаря, вам нужно получить к ней что-то вроде AnyObject. Например,

if let string = boardInfoDic?["description"] 
     { 
      boardNameLabel.text = String(format: "%@", string as! String) 
     } 

Обязательно отметьте это как ответ, если он вам поможет.

0

Попробуйте Необязательное превращение

if let string = boardInfoDic?["description"] as? String { 
    boardNameLabel.text = String(format: "%@", string) 
} 
0

Это работало для меня

if let string = boardInfoDic?["description"] as? String 
    { 
     boardNameLabel?.text = string 
    } 

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

  • Нет связанных вопросов^_^