我看到了几个问题,但没有找到解决方法和原因
这是结构
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。我只是访问媒体资源
请帮助
答案 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() })