Swift 4:NSFilenamesPboardType 不可用.用什么代替 registerForDraggedTypes? [英] Swift 4: NSFilenamesPboardType not available. What to use instead for registerForDraggedTypes?
本文介绍了Swift 4:NSFilenamesPboardType 不可用.用什么代替 registerForDraggedTypes?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
迁移到 Swift4 后,以下代码引发编译错误:
After migrating to Swift4 the following code raise compile error:
public final class MediaItemView: NSView {
public override init(frame frameRect: NSRect) {
super.init(frame: frameRect)
// error: 'NSFilenamesPboardType' is unavailable in Swift:
// use 'NSPasteboard.writeObjects(_:)' with file URLs
let draggedTypes: [NSPasteboard.PasteboardType] = [NSFilenamesPboardType]
registerForDraggedTypes(draggedTypes)
}
}
Swift4 中 NSFilenamesPboardType
的替代品是什么?如何在 Swift4 中注册 file name
的拖动类型(在我的情况下为 mp3、wav、aiff、... 文件)?
What is a replacement for NSFilenamesPboardType
in Swift4? How to register drag type of file name
(in my case mp3, wav, aiff, ... files) in Swift4?
谢谢!
推荐答案
我已经解决了这个扩展的向后兼容性问题:
I've solved backwards compatibility with this extension:
extension NSPasteboard.PasteboardType {
static let backwardsCompatibleFileURL: NSPasteboard.PasteboardType = {
if #available(OSX 10.13, *) {
return NSPasteboard.PasteboardType.fileURL
} else {
return NSPasteboard.PasteboardType(kUTTypeFileURL as String)
}
} ()
}
这意味着你可以使用 NSPasteboard.PasteboardType.backwardsCompatibleFileURL
这篇关于Swift 4:NSFilenamesPboardType 不可用.用什么代替 registerForDraggedTypes?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文