Swift 斯威夫特:诺内在哪里?
在Objective-C中,我可以从各种拖放方法返回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
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方法更为优越。它的简单和快速的摸索。