Swift 为什么我会出现这个错误;无法分配给属性:';简介';是一个只获取属性";-迅捷

Swift 为什么我会出现这个错误;无法分配给属性:';简介';是一个只获取属性";-迅捷,swift,swiftui,Swift,Swiftui,我试图从一个名为FeaturedData的文件中的静态数组中为数据对象赋值,但我一直遇到这样一个恼人的错误:“无法赋值:'blurb'是一个仅获取的属性” 这是我的模型: struct Featured: Codable { var tagline: String var title: String var blurb: String } 以下是我的ViewModel: import SwiftUI class FeaturedViewModel: Observabl

我试图从一个名为FeaturedData的文件中的静态数组中为数据对象赋值,但我一直遇到这样一个恼人的错误:“无法赋值:'blurb'是一个仅获取的属性”

这是我的模型:

struct Featured: Codable {
    var tagline: String
    var title: String
    var blurb: String
}
以下是我的ViewModel:

import SwiftUI

class FeaturedViewModel: ObservableObject {
    @Published var features = [FeaturedObjectViewModel]()
    var data = FeaturedData()
    
    func setFeatured() {
        for featured in data.featureds {
            let featureObject = FeaturedObjectViewModel(featured: featured)
            featureObject.blurb = featured.blurb
            self.features.append(featureObject)
        }
    }
}

struct FeaturedObjectViewModel {
    let featured: Featured
    
    var tagline: String {
        self.featured.tagline
    }
    
    var title: String {
        self.featured.title
    }
    
    var blurb: String {
        self.featured.blurb
    }
}
以下是提示错误的行:

featureObject.blurb = featured.blurb

我没有弄错什么。

blurb是一个计算属性。您不能指定任何值。它总是回来的

对FeaturedObjectViewModel使用init

struct FeaturedObjectViewModel {
    let featured: Featured
    
    var tagline: String = “”
    
    var title: String = “”
    
    var blurb: String = “”

  init(featured: Featured){
      self.featured = featured
      self.tagline = featured.tagline
      self.title = featured.title
      self.blurb = featured.blurb
  }
}
注意:通过这样做,您不需要这样做

featureObject.blurb=featured.blurb

它将通过init自动分配给对象值

另外,在使用computed属性的代码中,无需将值重新指定给featureObject变量。当您获得它时,它将获得featured.blurb值