我有一个结构数组,现在我想创建允许我通过索引路径删除结构的功能。我知道结构是不可变的,所以有关如何解决这个问题的建议吗?
我用来解决这个问题的代码是:
arrayOfStruct.removeAtIndex(index)
这导致了错误:'[Struct]'类型的不可变值只有名为'removeAtIndex'的变异成员
[澄清编辑]
arrayOfStruct在此类中声明为:
var arrayOfStruct: [Struct] {
return (UIApplication.sharedApplication().delegate as! AppDelegate).arrayOfStruct
}
答案 0 :(得分:1)
您已将AppDelegate memes
属性的访问者声明为计算属性。阅读Swift规范 - 计算出的属性确实是只读的。
但是,只读类引用可用作其中可写结构的直通方式。
可能你正试图让一个不那么冗长的访问者。您的快捷方式需要是:
MemeMe / MemeTableViewController.swift,第14-16行:
var appDel: AppDelegate {
return (UIApplication.sharedApplication().delegate as! AppDelegate)
}
然后,在用self.memes
代替self.appDel.memes
之前有override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return appDel.memes.count
}
:
MemeMe / MemeTableViewController.swift,第31-33行:
{{1}}