Swift 斯威夫特:诺内在哪里?

Swift 斯威夫特:诺内在哪里?,swift,drag-and-drop,drag,appkit,Swift,Drag And Drop,Drag,Appkit,在Objective-C中,我可以从各种拖放方法返回nsdragooperationne,以指示我不希望处理给定的拖动。这在苹果的文档中明确列出,用于nsdragooperation的Objective-C版本: 但是,如果您查看Swift的页面,或者查看苹果Swift标题中的nsdragooperation定义,.none不是选项 那么…如何拒绝Swift中的拖动操作?采用如下方法: func tableView(_ tableView: NSTableView, validateDrop

在Objective-C中,我可以从各种拖放方法返回
nsdragooperationne
,以指示我不希望处理给定的拖动。这在苹果的文档中明确列出,用于
nsdragooperation
的Objective-C版本:

但是,如果您查看Swift的页面,或者查看苹果Swift标题中的
nsdragooperation
定义,
.none
不是选项

那么…如何拒绝Swift中的拖动操作?采用如下方法:

func tableView(_ tableView: NSTableView, validateDrop info: NSDraggingInfo, proposedRow row: Int, proposedDropOperation dropOperation: NSTableView.DropOperation) -> NSDragOperation

注: 1) 我明确地处理AppKit和macOS,而不是UIKit或iOS


2) 我意识到我可以用
0
的原始值初始化
nsdragooperation
,这是Objective-C中给定给
nsdragooperation
的值,但这很脆弱。减少阻力的快速方法是什么?

您可能已经意识到这一点,但是
nsdragooperation
是一个小面具。每个案例的值是2的幂,您应该使用
|
在Objective-C中屏蔽它们

在Swift中,
nsdragooperation
被桥接,以符合
OptionSet
的要求,您可以将它们与类似集合的语法一起使用,如下所示:

let dragOp: NSDragOperation = [.copy, .link]
因此
none
操作只是一个空集:

let dragOp: NSDragOperation = []
使用[]。
。没有人反对。见

谢谢。我越喜欢斯威夫特,就越不喜欢它。一个命名为“无”的案例更为明确,因此旧的Objective-C方法更为优越。它的简单和快速的摸索。