【发布时间】:2021-02-23 05:10:20
【问题描述】:
import UIKit
import SwiftUI
var str = "Hello, playground"
struct FianceItem: Identifiable,Codable {
public var id: UUID
public var type: String
public var order: Int32
public var parentID: UUID?
public var childs:[FianceItem]
static func createType(name: String, parent: FianceItem?) -> FianceItem {
var item = FianceItem(id: UUID(), type:name, order: 1, parentID: nil,childs: [])
if parent != nil {
item.parentID=parent!.id
//Error Cannot use mutating member on immutable value: 'parent' is a 'let' constant
parent?.childs.append(item)
}
return item
}
}
var root = FianceItem.createType(name: "MyRoot", parent: nil)
var child = FianceItem.createType(name: "child", parent: root)
【问题讨论】:
-
问题是……?
-
似乎父中的子数组被声明为let变量。这意味着数组是不可变的,你不能修改它们的值。如果将 parent 的 childs 变量声明为 var 而不是 let,则应该能够将更多元素添加到数组中。
-
虽然对于错误,我看到父级不可变。似乎您将其声明为 let,而不是 var。这些关键字定义了变量的可变性。
标签: swift swiftui swift-playground