【问题标题】:How would I pass in sample data for a struct within a struct for Swift Previews?我将如何为 Swift Previews 的结构中的结构传递示例数据?
【发布时间】:2022-01-25 23:41:45
【问题描述】:

如何为 Swift Previews 结构中的结构传递示例数据?在我的代码中,我有具有一些属性的 StudentClass 结构。其中一个属性由另一个名为 Assignment 的结构组成。

import Foundation

struct StudentClass: Identifiable {
    let id: UUID
    let title: String
    let teacher: String
    var grade: Float
    var theme: Theme
    var assignments: [Assignment]
    
    init(id: UUID = UUID(), title: String, teacher: String, grade: Float, theme: Theme, assignments: [Assignment]) {
        self.id = id
        self.title = title
        self.teacher = teacher
        self.grade = grade
        self.theme = theme
        self.assignments = assignments
    }
}

extension StudentClass {
    struct Assignment: Identifiable, Codable {
        let id: UUID
        let name: String
        var grade: Float
        var pointsScored: Float
        var totalPoints: Float
        
        init(id: UUID = UUID(), name: String, grade: Float, pointsScored: Float, totalPoints: Float) {
            self.id = id
            self.name = name
            self.grade = grade
            self.pointsScored = pointsScored
            self.totalPoints = totalPoints
            
        }
        
    }
}

因此,在传递示例数据时,我尝试在示例属性列表中传递一个列表,但它在我的示例数据扩展上返回一个错误,即“表达式类型不明确,没有更多上下文”。 这是我的示例数据代码:

extension StudentClass {
    static let sampleData: [StudentClass] =
    [
        StudentClass(title: "Math", teacher: "Baski", grade: 100.00, theme: .yellow, assignments: [["Math HW", 100.00, 5.0, 5.0], ["Math HW #2", 90.00, 4.5, 5.0]]),
        StudentClass(title: "English", teacher: "Ritch", grade: 90.55, theme: .orange, assignments: [["English HW", 100.00, 5.0, 5.0], ["English HW #2", 90.00, 4.5, 5.0]]),
        StudentClass(title: "Global Studies", teacher: "Tiedemann", grade: 95.92, theme: .poppy, assignments: [["GS HW", 100.00, 5.0, 5.0], ["GS HW #2", 90.00, 4.5, 5.0]]),
        StudentClass(title: "Science", teacher: "Bolash", grade: 95.14, theme: .teal, assignments: [["Science HW", 100.00, 5.0, 5.0], ["Science HW #2", 90.00, 4.5, 5.0]])
    ]
}

我该如何解决这个问题?

【问题讨论】:

  • 你为什么将一堆数组作为Assignments 传递?他们应该是Assignment(name: ..., grade: ..., pointsScored: ..., totalPoints: ...)

标签: swift struct sample-data


【解决方案1】:

你可以这样做

struct StudentClass: Identifiable {
    let id: UUID
    let title: String
    let teacher: String
    var grade: Float
    var theme: Theme
    var assignments: [Assignment]
}

struct Assignment: Identifiable, Codable {
        let id: UUID
        let name: String
        var grade: Float
        var pointsScored: Float
        var totalPoints: Float
        
    }

-> 现在你可以像这样使用它了

StudentClass(id: 1, title: "Math", teacher: "Baski", grade: 100.00, theme: .yellow, 
assignments: [Assignment(id: 1, name: "Admin", grade: 50.2, pointsScored: 8.9, totalPoints: 10.0),
Assignment(id: 2, name: "Abc", grade: 90.2, pointsScored: 4.5, totalPoints: 5.0)])

【讨论】:

    猜你喜欢
    • 2022-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多