Swift-有没有一种方法可以在不调用对象的情况下在对象上运行方法?(赛尔夫?)



关于我正在使用的几个不同函数的快速问题,所有函数都有相同的想法。我有一个对象,我想用它运行一个函数。但因为它是Objects类型的扩展,所以我调用object.method(on: object)。有没有一种方法可以简化它,使它在不必声明的情况下自行运行?

示例:

import UIKit
extension UINavigationController {

func removeBackButtonString(on navigationController: UINavigationController) {
let backButton = UIBarButtonItem(title: "", style: .plain, target: nil, action: nil)
navigationController.navigationBar.topItem?.backBarButtonItem = backButton
}

}

用于代码:

navigationController?.removeBackButtonString(on: navigationController!)

但有没有办法这样称呼它?

navigationController?.removeBackButtonString()

或者,扩展NSManagedObject:

extension Object {
func setFavorite(object: Object) {
object.isFavorite = true
}
}

使用:object.setFavorite(object: object)但是如果没有参数,如何使用object属性?示例:object.setFavorite()

是的,您可以将扩展函数修改为以下内容:

extension UINavigationController {        
func removeBackButtonString() {
let backButton = UIBarButtonItem(title: "", style: .plain, target: nil, action: nil)
// `self` is inferred in Swift
navigationBar.topItem?.backBarButtonItem = backButton
}
}

然后,这将运行得非常好:

navigationController?.removeBackButtonString()

更新:这同样适用于您的第二个示例:

extension Object {
func setFavorite() {
isFavorite = true
}
}

最新更新