无法在数组的firstIndex方法中的结构中使用惰性var

时间:2019-04-05 07:56:34

标签: ios swift

我看到了几个问题,但没有找到解决方法和原因

这是结构

struct MovementFormattedData {
   ... Other properties ...
   lazy var timeAsDate:Date?  = {
       return MovementFormattedData.getUTCDate(movementTime: movementTime)
    }()



  static func getUTCDate(movementTime:String?) -> Date? {
        // return date
     }
}

现在我有了数组

var movements :[MovementFormattedData] = []

当我尝试

  self?.movements.firstIndex(where: {$0.timeAsDate > Date() })

我得到

  

不能在不可变值上使用变异getter:'$ 0'是不可变的

我没有在任何地方修改$ 0。我只是访问媒体资源

请帮助

3 个答案:

答案 0 :(得分:1)

我认为初始化timeAsDate可算是变异,因此惰性变量可能不是您所需要的。

只要不需要手动更改它,您就可以尝试使用计算变量。

var timeAsDate: Date? {
   return MovementFormattedData.getUTCDate(movementTime: movementTime)
}

答案 1 :(得分:0)

无需使用惰性var

var timeAsDate: Date? {
    return MovementFormattedData.getUTCDate(movementTime: movementTime)
}

答案 2 :(得分:0)

懒惰属性正在使getter发生变异,因此您不能将其与$ 0一起使用,因为$ 0是不可变的

请参阅以下代码块

struct MovementFormattedData {
   ... Other properties ...
   var timeAsDate: Date? {
       return MovementFormattedData.getUTCDate(movementTime: movementTime)
    }

  static func getUTCDate(movementTime:String?) -> Date? {
        // return date
     }
}

var movements: [MovementFormattedData] = []

self?.movements.firstIndex(where: { $0.timeAsDate ?? Date() > Date() })