【问题标题】:Cannot convert call result type 'Set<String>' to expected type 'String' error无法将调用结果类型“Set<String>”转换为预期类型“String”错误
【发布时间】:2021-07-04 13:20:44
【问题描述】:

我正在处理一个旧的 Swift 3 项目,在将其更新到 Swift 4.2 后出现此错误。它似乎在 Swift 3 中运行良好。我不得不声明 let NSURLPboardType = NSPasteboard.PasteboardType(kUTTypeURL as String) 因为 NSURLPboardType 在 Swift 4.2 中不存在,但其他代码是相同的。

enum SparkleDrag {
    static let type = "com.razeware.StickerDrag.AppAction"
    static let action = "make sparkles"
}

let NSURLPboardType = NSPasteboard.PasteboardType(kUTTypeURL as String)
  
var nonURLTYpes: Set<String> {return [String(kUTTypeTIFF), SparkleDrag.type]}
  
var acceptableTypes: Set<String> {return [nonURLTYpes.union(NSURLPboardType)]}

union 中的“u”带有错误下划线,但我不太了解问题的性质。任何指导将不胜感激。

【问题讨论】:

    标签: macos-catalina swift4.2


    【解决方案1】:

    问题是NSURLPboardType不是Set&lt;String&gt;,所以联合不能工作。

    如果你想得到这样的东西:

    ["com.razeware.StickerDrag.AppAction", "public.url", "public.tiff"]
    

    aceptableTypes 中,您可以简单地放弃NSURLPboardType 并执行以下操作:

    enum SparkleDrag {
        static let type = "com.razeware.StickerDrag.AppAction"
        static let action = "make sparkles"
    }
    
    // let NSURLPboardType = NSPasteboard.PasteboardType(kUTTypeURL as String)
      
    var nonURLTYpes: Set<String> {return [String(kUTTypeTIFF), SparkleDrag.type]}
      
    var acceptableTypes: Set<String> {return nonURLTYpes.union([kUTTypeURL as String])}
    

    【讨论】:

    • @tromgy 谢谢你的回答。那套正是我想要得到的。
    猜你喜欢
    • 1970-01-01
    • 2023-04-05
    • 2016-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-30
    • 1970-01-01
    相关资源
    最近更新 更多