Swift - 有没有办法 运行 对象上的方法而不调用对象? (自己?)
Swift - Is there a way run a method on an object without calling the object? (Self?)
关于我拥有的几个不同功能的快速问题,它们都有相同的想法。我有一个对象,我想用它 运行 一个函数。但是因为它是 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
}
}
关于我拥有的几个不同功能的快速问题,它们都有相同的想法。我有一个对象,我想用它 运行 一个函数。但是因为它是 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
}
}