如何在 swift 中的现有 class 中添加变量?

How to add variable in existing class in swift?

我知道在 swift 中我们可以使用 Extensions 向现有 类 添加新方法。

但是如果我想添加一个变量呢?

extension UIViewController {

    var myVar = "xyz"
}

它给出了这样的结果:

Extensions must not contain stored properties

你可以试试(这是一个只读的计算属性)

extension UIViewController {

    var someProperty : String {

        return "xyz"
    }
}

您只能按如下方式将计算属性添加到扩展...

extension UIViewController {
   var someProperty = "xyz" : String {
      return "xyz"
   }
}

如果您希望按照您定义的方式使用它,您可能需要继承您的 UIViewController

class YourCustomViewController: UIViewController {
    var someProperty: String = "xyz"
}

我们无法将 stored properties 直接添加到 extensions,但我们可以添加 computed variables

extension UIViewController {
    var myVar: String {
        return "xyz"
    }
}

Extensions in Swift can:

  • 添加计算实例属性和计算类型属性
  • ...

更多请访问

https://docs.swift.org/swift-book/LanguageGuide/Extensions.html

您只能使用计算变量: 例如,我们在 swift 中有类型 Int,我们希望它以 swift 生成从 0 到我们的数字的随机数的方式扩展:

extension Int
{
    var arc4random : Int{
        if self > 0
        {return Int(arc4random_uniform(UInt32(UInt(self))))}

         else if self < 0
        {return -Int(arc4random_uniform(UInt32(UInt(abs(self)))))}

        else
        {return 0}
    }
}

和用法:

myArray.count.arc4random

这里我的 array.count 是一个 Intarc4random 是我们在扩展中定义的计算变量,你不能在其中存储一个值