2017-09-27 77 views

回答

1

我想通了这个问题。当我将Swift迁移到4并选择了第一个选项(推荐)时,它并未将@objc属性附加到需要它的变量上。主要是我的整个Node类需要变量的@objc属性,第二个选项'Match Swift 3 Behavior'做了,我的桌面应用程序运行时没有任何崩溃。

从斯威夫特3到4以下适当的转换为你的Node类的一个实例:

class Node: NSObject, TreeNode { 
    @objc var name1: String 
    @objc var name2: String 
    @objc var name3: String? 

    @objc var children: [Node] = [] 

    @objc init(name1: String, name2: String, name3: String) { 
     self.name1 = name1 
     self.name2 = name2 
     self.name3 = name3 
    } 

    @objc func addChild(node: Node) { 
     // add child function 
    } 

    @objc func findChild(node: Node) -> Node? { 
     // find child function 
    } 
} 

因此,对于任何人遇到了这个问题,当你转换为雨燕4,尝试使用“匹配斯威夫特3行为“选项。