如何解决Swift-有没有一种方法可以在不调用对象的情况下在对象上运行方法? 自?
关于我拥有的一些不同功能的快速提问,都具有相同的想法。我有一个对象,并且我想用它运行一个函数。但是因为它是对象类型的扩展,所以我称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
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。