【问题标题】:XCode: Swift strange behaviour and errorsXCode:Swift 奇怪的行为和错误
【发布时间】:2015-12-05 19:11:01
【问题描述】:

我是 Swift 新手,我正在尝试基于以下代码创建一个新的 Cocoa 应用程序:

Drag and Drop in Swift - Issues with Registering for Dragged Types?

我正在这样做:

  1. 创建 Swift Cocoa 应用程序
  2. 添加自定义视图
  3. 添加一个名为 DropView 的 NSView 的 Swift 类子类
  4. 将自定义视图类设置为 DropView
  5. 将引用的代码粘贴到 DropView 中

然后我遇到了一些错误,我并没有真正理解为什么以及如何解决它。有人可以帮我吗?

【问题讨论】:

    标签: swift cocoa


    【解决方案1】:

    正如第一个错误所说,您需要将 override 添加到您的 init 方法中:

    override init(frame frameRect: NSRect) {
        super.init(frame: frameRect)
    }
    

    draggingEntereddraggingUpdated 方法也有一些变化。您的NSDraggingInfo 不再需要!

    override func draggingEntered(sender: NSDraggingInfo) -> NSDragOperation {
        return NSDragOperation.Copy
    }
    
    override func draggingUpdated(sender: NSDraggingInfo) -> NSDragOperation {
        return NSDragOperation.Copy
    }
    

    要检查您想要覆盖的方法的正确实现,只需开始在文件中输入方法名称,Xcode 就会为您创建带有标题等的方法:

    要修复上一个错误,您需要实现required init NSView 需要:

    required init?(coder: NSCoder) {
        super.init(coder: coder)
    }
    

    为了帮助您解决此类进一步的错误:Xcode 本身通常可以帮助您解决问题。特别是如果您在编辑器左侧看到圆形错误圆圈。只需点击它并查看 Xcode 推荐的内容:

    【讨论】:

    • 嘿,感谢您提供的所有信息。我试过了,但似乎没有调用 DropView 类。我无法记录 init 方法。
    • 但这是另一个问题,与您得到的错误无关。你应该问另一个问题来解决这个问题。
    猜你喜欢
    • 2016-03-27
    • 2012-11-26
    • 2015-07-27
    • 2018-12-17
    • 1970-01-01
    • 2020-09-02
    • 2012-12-27
    • 1970-01-01
    • 2017-08-08
    相关资源
    最近更新 更多