【问题标题】:Static property for type in Swift [duplicate]Swift中类型的静态属性[重复]
【发布时间】:2014-11-11 08:23:50
【问题描述】:

我想在 GpsLocation 类型上声明静态属性 unknown

class GpsLocation: NSObject {
  var lat: NSDecimalNumber = 0
  var lng: NSDecimalNumber = 0
  class var unknown:GpsLocation = GpsLocation(lat: 0, lng: 0)

  init(lat:NSDecimalNumber, lng: NSDecimalNumber){
       self.lat = lat
       self.lng = lng
  }

}

我得到“尚不支持类变量”

如何在 Swift 中声明静态属性?

【问题讨论】:

  • 不是您问题的答案,但为什么不使用CLLocation 对象?
  • 只要在viewDidLoad上面定义就行了
  • @Antonio,谢谢,您的评论很有帮助。

标签: ios oop swift


【解决方案1】:

我不确定您真正想要做什么,但从命名来看,您最好实际使用可选的 GpsLocation 来指示未知位置,而不是将其与非法值(即实际上,在这种情况下,是一个非常合法的 GPS 位置)

这实际上是可选项的预期用法,表示某事物具有无效或未知值,而不是试图提出一些其他无效值来填充它们。

在任何情况下,您实际尝试做的事情都可以通过在方法中实际实现 getter 来完成:

class var unknown:GPSLocation { return GPSLocation(lat: 0, lng: 0) }

【讨论】:

    【解决方案2】:
    class GpsLocation: NSObject {
          var lat: NSDecimalNumber = 0
          var lng: NSDecimalNumber = 0
          class var unknown:GpsLocation = GpsLocation(lat: 0, lng: 0)
    
      struct Static {
        static var unkwown:GpsLocation = GpsLocation(lat: 0, lng: 0)
      }
    
      init(lat:NSDecimalNumber, lng: NSDecimalNumber){
           self.lat = lat
           self.lng = lng
      }
    
    }
    

    【讨论】:

      猜你喜欢
      • 2015-08-13
      • 2014-12-07
      • 2013-08-17
      • 2014-12-21
      • 2011-04-21
      • 2017-06-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多