首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Swift中UI元素的泛型``getText()‘函数

Swift中UI元素的泛型``getText()‘函数
EN

Stack Overflow用户
提问于 2018-03-28 13:46:15
回答 4查看 966关注 0票数 1

对于很多操作,我需要检查label.texttextView.texttextField.text等的内容是否为零。

所以我创建了一些扩展:

代码语言:javascript
运行
复制
extension UILabel {
    func getText() -> String {
        return self.text ?? ""
    }
}

extension UITextField {
    func getText() -> String {
        return self.text ?? ""
    }
}

extension UITextView {
    func getText() -> String {
        return self.text ?? ""
    }
}

扩展是非常多余的。类似的情况是,我需要将IntDoubleFloat等转换为另一种数字格式。我想要的是一个简单的toInt(),在出了问题时返回-10

那么,如何为toString()toInt()创建泛型函数呢?我在苹果文档中读到了关于扩展仿制药的文章,但我没有找到解决问题的方法。

最后,我尝试用相同的扩展扩展UIView,因为它是UILabel等的超类,但我不能调用getText()

那么,创建泛型扩展的好方法是什么呢?

EN

Stack Overflow用户

发布于 2018-03-28 15:22:22

这个单行比这里发布的所有其他答案减少了冗余代码(您想要的)。不需要疯狂的状态-检查或多个扩展。

代码语言:javascript
运行
复制
extension UIView {
    func getText() -> String? {
        return self.responds(to: #selector(getter: UILabel.text)) ?
        self.perform(#selector(getter: UILabel.text))?.takeUnretainedValue() as? String : nil
    }
}
票数 0
EN
查看全部 4 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49536268

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档