如何解决错误:xcode12 和 swiftui 中的“无法在不可变值上使用变异成员:‘users’是仅获取属性”

问题描述

当我尝试附加到我的配置文件模型中的一个数组时,出现上述错误

这是我的个人资料模型代码

import Foundation

struct UserProfile: Codable {
    var firstName: String
    var lastName: String
    var age: Int16
    var password: String
    var email: String
    
    
}

extension UserProfile {
    static var users: [UserProfile] {
        [
        UserProfile(firstName: "aryan",lastName: "chordia",age: 21,password: "123",email: "aryanchordia@gmail.com"),UserProfile(firstName: "tyler",lastName: "duic",email: "tduic@andrew.cmu.edu"),]
    }
}

extension UserProfile {
    struct Data {
        var firstName: String = ""
        var lastName: String = ""
        var age: Int16 = 21
        var password: String = ""
        var email: String = ""
    }
    
    var data: Data {
        return Data(firstName: firstName,lastName: lastName,age: age,password: password,email: email)
    }
}

这是我尝试在 SignUpView.swift 中附加到我的 UserProfile.users 数组的方法

func signup() -> Bool {
        let user = UserProfile(firstName: userData.firstName,lastName: userData.lastName,password: userData.password,email: userData.email)
        UserProfile.users.append(user)
        return true
    }

非常感谢任何帮助!

解决方法

您在这里使用的是计算属性。因此,该值是计算出来的,您不能设置它。

您可以使用这样的函数创建数组或立即声明为正确的值:

static var users: [UserProfile] = {
    [
    UserProfile(firstName: "aryan",lastName: "chordia",age: 21,password: "123",email: "aryanchordia@gmail.com"),UserProfile(firstName: "tyler",lastName: "duic",email: "tduic@andrew.cmu.edu"),]
}()