【发布时间】:2018-09-10 17:39:32
【问题描述】:
这是我的代码:
import UIKit
struct StructName{
var name: String?
var specs: [Spec]?
init(specs: [Spec]? = nil, name: String? = nil) {
self.specs = specs
self.name = name
}
}
struct Spec{
var name: String
var title: String
var content: String
var display: Bool
}
class ViewController: UIViewController {
var structNames: [StructName] = []
var specs = [Spec]()
override func viewDidLoad() {
super.viewDidLoad()
specs.append(Spec(name: "Name_1", title: "Title_1", content: "Content_1", display: false))
structNames.append(StructName(name: "Name_3"))
structNames.append(StructName(name: "Name_4"))
structNames.append(StructName(name: "Name_1"))
append()
print(structNames)
}
func append(){
for i in specs{
let index = structNames.index { (structName) -> Bool in
structName.name == i.name
}
print(structNames[index!].name)
structNames[index!].specs?.append(Spec(name: "a", title: "a", content: "a", display: false))
}
}
}
为什么这不起作用?
structNames[index!].specs?.append(Spec(name: "a", title: "a", content: "a", display: false))
它应该打印这个:
[test.Utility(utility_name: Optional("Name_3"), specs: nil), test.Utility(utility_name: Optional("Name_4"), specs: nil), test.Utility(utility_name: Optional("Name_1" "), specs: "SPEC I APPENDED")]
您可能理解,我想将给定的 Spec 附加到特定索引。
【问题讨论】:
-
因为
structNames实例的specs是nil。 -
你是说我应该把我的默认初始化器改成别的东西吗?
-
是的,只要给它一个默认值
var specs: [Spec] = [] -
谢谢你的工作,只要回答,我会接受。