SwiftData @Model 对象警告:无法扩展使用“let”声明的变量的访问器;这是 Swift 6 语言模式下的错误

问题描述 投票:0回答:1

今天早上更新了 Xcode,我的 SwiftData 模型充满了关于这在 Swift 6 中如何成为错误的警告。

Cannot expand accessors on variable declared with 'let'; this is an error in the Swift 6 language mode

一个例子:

@Model
class Expense {
    let id: UUID // warning here
    var cashflow: Int
    let isPermanent: Bool // warning here
    var name: String
    
    var asset: Asset?
    var liability: Liability?
    
    var player: Player?
    var profession: Profession?
    
    init(name: String, cashflow: Int, isPermanent: Bool) {
        self.id = UUID()
        self.cashflow = cashflow
        self.isPermanent = isPermanent
        self.name = name
    }   
    
}

我可以通过将警告从

let
更改为
var
来消除警告,但是如果我希望这些值实际上不可更改,我该怎么办?我不希望在初始化后能够更改对象的
id
,因此将其声明为
var
感觉非常错误。

ios swift swiftdata
1个回答
0
投票

您可以使用

private
访问修饰符来写入属性

private(set) var id: UUID
var cashflow: Int
private(set) var isPermanent: Bool 
var name: String

那么你只需要小心同一个类中的方法,这样你就不会改变那里的值。

© www.soinside.com 2019 - 2024. All rights reserved.