2017-02-22 3 views
0

In meiner benutzerdefinierten Kollektion Zelle Swift Abwickeln habe ichUILabel gesetzt Text unerwartet null gefunden, während ein optionaler Wert 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) 
     } 
} 

und ich bin Daten boardInfoDic von collectionViewcellForItemAt indexPath: als

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) 

sendet, aber ich bekomme ich fatal error: unexpectedly found nil while unwrapping an Optional value, wurde ich auf verschiedene Arten versucht, aber keine Verwendung. Wie kann ich dieses Problem beheben?

Outlet Verbindung mit UICollectionViewCell enter image description here

+0

ändern Zeile in 'wenn lassen string = boardInfoDic? [ "Beschreibung"] wie? String' und dann boardNameLabel.text = string. –

+0

@NiravD Ich habe den gleichen Fehler nach dem Ändern des Codes auch – SriKanth

+0

@NiravD aktualisiert die Frage mit Bezug auf Steckdose, ich bin verrückt von gestern Abend, um das Problem zu beheben. – SriKanth

Antwort

0

zuerst Ihre boardInfoDic bestätigen ist nicht leer. Verwenden Sie diese

func updateItemAtIndexPath(_ indexPath: NSIndexPath) { 

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

} 
0

wenn Sie if let string = boardInfoDic?["description"] tun, dass variable string ist nicht vom Typ String es vom Typ AnyObject. Wenn Sie also string in eine String umwandeln, ist es nicht möglich, diese Typumwandlung zu treffen, und als Ergebnis wird nil zurückgegeben. Um eine Zeichenkette aus Ihrem Wörterbuch zu erhalten, müssen Sie darauf mit etwas vom Typ AnyObject zugreifen. Zum Beispiel

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

Achten Sie darauf, dies als die Antwort zu markieren, wenn es Ihnen hilft.

0

optional Umwandlung Versuchen für mich

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

Das funktionierte

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