2017-02-22 8 views
0

스위프트하는 옵션 값을 풀기 동안 텍스트가 예기치 않게 내가 UILabel의 내 사용자 정의 collectionview 셀에 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) 
     } 
} 

을 가지고 내가

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) 

하지만 같은 collectionViewcellForItemAt indexPath:에서 boardInfoDic로 데이터를 전송하고 무기 호를 발견 설정 fatal error: unexpectedly found nil while unwrapping an Optional value을 받고 있는데, 여러 가지 방법으로 시도했지만 사용하지 않았습니다. 이 문제를 어떻게 해결할 수 있습니까? 먼저 당신의 boardInfoDic을 확인 UICollectionViewCell enter image description here

+0

변경 라인 근무 시도에'하자 문자열 = boardInfoDic? [ "설명"]로하면? String'을 누른 다음 단순히 boardNameLabel.text = string을 입력하십시오. –

+0

@NiravD 코드를 변경 한 후에도 동일한 오류가 발생했습니다 – SriKanth

+0

@NiravD가 콘센트에 대한 질문을 업데이트했습니다. 어젯밤부터 문제를 해결하기 위해 화를 냈습니다. – SriKanth

답변

0

콘센트 연결이 비어 있지 않습니다. 당신이 if let string = boardInfoDic?["description"]을 수행 할 때 string 변수는 유형 AnyObject이다 유형 String이 아닌 것을이

func updateItemAtIndexPath(_ indexPath: NSIndexPath) { 

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

} 
0

를 사용합니다. 따라서 stringString으로 캐스팅 할 때이 형식의 형 변환을 수행 할 수 없으며 결과적으로 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 
    }