tableViewSelectionDidChange在Xcode 8中不起作用

时间:2016-10-05 21:07:54

标签: ios swift xcode

升级到MacOS Sierra后,因此对于Xcode 8,tableViewSelectionDidChange功能不再起作用。我认为我的代码是正确的。

func tableViewSelectionDidChange(_ notification: Notification) {

if let selectedRow = (notification.object as AnyObject).selectedRow {
    if ( selectedRow > -1 ) {
        selectedItem = data[selectedRow]
        if let nome = selectedItem?.value(forKey: "nome") as? String {
            nomeField.stringValue = nome
        } else {
            blankOutField(nomeField)
        }


override func viewDidLoad() {
    super.viewDidLoad()
    let appDelegate = NSApplication.shared().delegate as! AppDelegate
    managedContext = appDelegate.managedObjectContext
    tableView.delegate = self
    tableView.dataSource = self
    fetchDataAndRefreshTable()
}

func fetchDataAndRefreshTable() {
    let fetchRequest = NSFetchRequest<NSFetchRequestResult> (entityName: "CadastroPacientes")
    let sortDescriptor = NSSortDescriptor(key: "nome", ascending: true, selector: #selector(NSString.localizedStandardCompare(_:)))
    fetchRequest.sortDescriptors = [sortDescriptor]
    do {
        data = try managedContext!.fetch(fetchRequest) as! [NSManagedObject]
    } catch {
        Swift.print(error)
    }  
}

我找不到解决方案,因为似乎未选中该行,单击TableView中的行时没有任何反应。

该程序正在使用Core Data。以前一切都很完美。

1 个答案:

答案 0 :(得分:0)

selectedRow > -1更改为selectedRow >= -1,因为Binary operator '>' cannot be applied to operands of type Int .... NEXT如果您可以将selectedItem更改为selectedRow这些是我在遇到的主要错误我尝试运行你的代码