如何解决不能在不可变值上使用变异成员:“父”是“让”常量?
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)
解决方法
当您传递一个结构体(按值复制)时,如果没有 inout
,您无法改变函数参数。
编辑您的代码并重试:
static func createType(name: String,parent: inout FianceItem?) -> FianceItem {
如果你想传递 nils,你也必须做这个改变:
var nilParent: FianceItem? = nil
var root = FianceItem.createType(name: "MyRoot",parent:&nilParent)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。