2017-11-03 1 views
1

내 프로젝트 (MacOS, Swift 4)에서 "다음과 같은 오류가 발생합니다. String : String] 'NSTableViewDataSource를 설정하려고 할 때'NSUserInterfaceItemIdentifier '유형의 인덱스를 사용합니다. 스위프트 3에서 제대로 작동했지만 프로젝트를 스위프트 4로 업데이트하면 작동이 멈췄습니다.'NSUserInterfaceItemIdentifier'유형의 인덱스가있는 '[String : String]'유형의 값을 첨자화할 수 없습니다.

그래서 내가 뭘 하려는지, 셀 id를 사용하여 "tableView"에 "tableViewData"를 표시하는 것입니다.

이 내 코드입니다 : 스위프트 4에서 변경 된 내용

import Cocoa 

    class ViewController: NSViewController { 

     @IBOutlet weak var tableView:NSTableView! 

     let tableViewData = [["picID":"default","nameID":"default","amount":"1","address":"default"],["picID":"default","nameID":"default","amount":"1","address":"default"]] 

     override func viewDidLoad() { 
      super.viewDidLoad() 
      self.tableView.delegate = self as? NSTableViewDelegate 
      self.tableView.dataSource = self 


     } 
    } 

    extension ViewController:NSTableViewDataSource{ 
     func numberOfRows(in tableView: NSTableView) -> Int { 
      return tableViewData.count 
     } 

     func tableView(_ tableView: NSTableView, objectValueFor tableColumn: NSTableColumn?, row: Int) -> Any? { 
      return tableViewData[row][(tableColumn?.identifier)!] // This is where the error appears 
     } 
    } 

어떤 생각?

+0

힌트 : ⌥ 클릭 * – vadian

답변

2

NSUserInterfaceItemIdentifier은 구조체 유형입니다.

tableViewData[row][(tableColumn?.identifier.rawValue)!] 
+0

지금은 작동 스위프트 4 변경된 것을 * 볼'identifier'에, 감사합니다 당신은 기본 값을 얻기 위해 .rawValue를 호출해야합니다! – CaOs433

관련 문제