0

在我的自定义 collectionview 单元格中,我有

@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)
        }
}

我从collectionView cellForItemAt indexPath:as向 boardInfoDic 发送数据

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 的插座连接 在此处输入图像描述

4

4 回答 4

0

尝试可选转换

if let string = boardInfoDic?["description"] as? String {
    boardNameLabel.text = String(format: "%@", string)
}
于 2017-02-22T07:34:04.727 回答
0

首先确认您的 boardInfoDic 不为空。用这个

    func updateItemAtIndexPath(_ indexPath: NSIndexPath) {

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

}
于 2017-02-22T07:01:14.417 回答
0

这对我有用

if let string = boardInfoDic?["description"] as? String
    {
        boardNameLabel?.text = string
    }
于 2017-02-22T10:07:02.223 回答
0

当您这样做时if let string = boardInfoDic?["description"] ,该变量string不是类型String,而是类型AnyObject。结果,当您string转换为 aString时,无法将此类型转换为类型,结果返回 nil。为了从字典中获取字符串,您需要使用 type 来访问它AnyObject。例如

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

如果对您有帮助,请务必将其标记为答案。

于 2017-02-22T07:10:19.880 回答