मेरे प्रोजेक्ट (MacOS, Swift 4) में, मुझे यह त्रुटि मिलती है: "जब मैं कोशिश कर रहा हूं तो 'NSUserInterfaceItemIdentifier' प्रकार की अनुक्रमणिका के साथ '[स्ट्रिंग: स्ट्रिंग]' प्रकार के मान को सब्सक्राइब नहीं कर सकता" NSTableViewDataSource सेट करने के लिए। स्विफ्ट 3 में इसने ठीक काम किया, लेकिन जब मैंने प्रोजेक्ट को स्विफ्ट 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 
        }
    }

कोई विचार है कि स्विफ्ट 4 में क्या बदला गया है?

2
CaOs433 3 नवम्बर 2017, 19:48

1 उत्तर

सबसे बढ़िया उत्तर

NSUserInterfaceItemIdentifier एक स्ट्रक्चर टाइप है। अंतर्निहित मूल्य प्राप्त करने के लिए आपको .rawValue पर कॉल करना चाहिए:

tableViewData[row][(tableColumn?.identifier.rawValue)!]
5
ozgur 3 नवम्बर 2017, 19:50