Swift: 'var' declaration without getter/setter method not allowed here

前端 未结 2 1969
-上瘾入骨i
-上瘾入骨i 2021-02-05 15:01

I\'ve tried to declare IBOutlet property on extension of class. But it give error as

\'var\' declaration without getter/setter method not al

相关标签:
2条回答
  • 2021-02-05 15:36

    From The Swift Programming Language:

    Extensions in Swift can:

    • Add computed properties and computed static properties
    • Define instance methods and type methods
    • Provide new initializers
    • Define subscripts
    • Define and use new nested types

    Which means you can't add IBOutlets and other stored properties. If you really want to cheat, you can create global vars or a bookkeeping object which would allow you to query these vars or the object in order to add those properties (and have them be computed properties).

    But it seems like it would go against the best practices. I would only do it if there's absolutely no other way.

    0 讨论(0)
  • 2021-02-05 15:41

    From Extensions -> Computed Properties in The Swift Programming Language

    NOTE

    Extensions can add new computed properties, but they cannot add stored properties, or add property observers to existing properties.


    Addition in response to twlkyao's comment: Here is my implementation of the absoluteValue property of a Double

    extension Double {
        var absoluteValue: Double {
            if self >= 0 {
                return self
            } else {
                return -self
            }
        }
    }
    
    // Simple test -> BOTH println() should get called.
    var a = -10.0
    if (a < 0) {
        println("Smaller than Zero")
    }
    if (a.absoluteValue > 5) {
        println("Absolute is > 5")
    }
    
    0 讨论(0)
提交回复
热议问题