将 Swift 3.0 的选择器转换为 2.2

Posted

技术标签:

【中文标题】将 Swift 3.0 的选择器转换为 2.2【英文标题】:convert selector of Swift 3.0 to 2.2 【发布时间】:2016-11-29 11:29:11 【问题描述】:
let selector: Selector = #selector(getter: UIPrinter.displayName)

我想将此行转换为 swift 2.2

这里是函数的完整代码

func indexFiles() 

       let selector: Selector = #selector(getter: UIPrinter.displayName)
        sections = Array(repeating: [], count: collation.sectionTitles.count)



        if let sortedObjects = collation.sortedArrayFromArray(files, collationStringSelector: selector) as? [FBFile]
            for object in sortedObjects 
                let sectionNumber = collation.sectionForObject(object, collationStringSelector: selector)
                sections[sectionNumber].append(object)
            
        
    

【问题讨论】:

Referencing getter is Swift 3+ feature。所以它可能需要一些包装。 【参考方案1】:

尝试从 UIPrinter 实例 var 中获取选择器。你可以使用

Selector 类的 public init(_ str: String) 初始化器。

    let url = NSURL(fileURLWithPath: "file url ")
    let printer = UIPrinter(URL:url)
    let selector:Selector = Selector(printer.displayName)

【讨论】:

以上是关于将 Swift 3.0 的选择器转换为 2.2的主要内容,如果未能解决你的问题,请参考以下文章

Swift 3.0 字符串问题

Swift 3.0 多个选择器视图无法识别数据源变量

将 initWithCoder: implementation 转换为 Swift 时未触发手势识别器选择器

如何在 swift 3.0 中制作时间选择器视图?

Swift 3.0 转换错误

Swift 2.2 字符串文字选择器