【问题标题】:Possible to add typealias for section of code? [closed]可以为代码段添加类型别名吗? [关闭]
【发布时间】:2021-07-03 19:55:48
【问题描述】:

在我的视图控制器中,我正在使用以下代码在多个位置重新加载 tableView。

DispatchQueue.main.async { self.tableView.reloadData() }

看起来我在多个地方重写了相同的代码。是否可以为此写typealias。我知道这可以用一种通用方法编写,然后在需要的地方调用它。只是好奇,还有其他方法吗??

【问题讨论】:

  • 谢谢@Rob。只是想知道 Swift 有特殊的类型可以做到这一点。感谢您的更新!!!

标签: ios swift enums type-alias


【解决方案1】:

它不是“类型”,所以类型别名没有意义。为它写一个函数就可以了。或者定义一个代码 sn-p,这样你就可以编写加速这个通用代码 sn-p 的插入,只需敲几下键。

例如选择代码,右键单击它,然后选择“创建代码片段”:

如果需要,您可以提供“完成”字符串,例如tvrd 在这个例子中:

然后你可以输入你的自动完成字符串,你的代码 sn-p 将被插入:

【讨论】:

  • 如果 Rob 的回答回答了您的问题(确实如此),您应该接受它。对好的答案进行投票也是一种好的形式。 (投票)
【解决方案2】:

@Rob 答案中提到的是正确且好的答案。如果您正在处理 UIViewController 子类并拥有 TableView 控制器,则可以使用此扩展。这将帮助您处理所有视图控制器。

extension UITableView {
    func reloadOnMainIfNeeded() {
        if Thread.isMainThread {
            self.reloadData()
        } else {
            DispatchQueue.main.async {
                self.reloadData()
            }
        }
    }
}

用法

class TestController: UIViewController {
    
    @IBOutlet weak var tableView: UITableView!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        tableView.reloadOnMainIfNeeded()
    }
}

class TestTableController: UITableViewController {
    
    override func viewDidLoad() {
        super.viewDidLoad()
        tableView.reloadOnMainIfNeeded()
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-23
    • 1970-01-01
    • 1970-01-01
    • 2018-05-09
    • 2021-01-04
    相关资源
    最近更新 更多