我有一个结构:
struct Note{
var date: String;
var comment: String;
}
然后我创建了一个嵌套在其中的两个数组的数组,
var data = [[Note()],[Contributors()]]
这两个数组用于填充表视图的两个部分。 我需要在Notes结构数组上附加一个结构,但是当我尝试使用
附加它时data[0].append(Note(date: "06-06-2012",comment:"Created Note"))
和
(data[0] as! Note).append(Note(date: "06-06-2012",comment:"Created Note"))
抛出错误
不能对'Note'
类型的不可变值使用变异成员
如何改变需要转换的值?
答案 0 :(得分:1)
您最初创建的数组不正确。
变化:
var data = [[Note()],[Contributors()]]
为:
var data: [Any] = [[Note](),[Contributors]()]
您的代码创建一个数组,该数组在索引0处包含一个Any
数组,其中包含一个空Note
实例,在索引1处包含一个Any
数组,其中包含一个空{{1}实例。
该修补程序创建一个数组,该数组在索引0处包含空Contributors
数组,在索引1处包含空Note
数组。
但即使使用了所有这些"修复程序",如果您这样做,仍然会收到错误:
Contributors
(data[0] as! Note).append(Note(date: "06-06-2012",comment:"Created Note"))
包含两种不同类型的数据有点奇怪。你真的应该有两个数组:
data
然后你可以很容易地做到:
var notes = [Note]()
var contributors = [Contributors]()
答案 1 :(得分:0)
您可以使用protocol
protocol DataSourceNoteContributors {}
struct Contributors: DataSourceNoteContributors{
}
struct Note:DataSourceNoteContributors{
var date: String;
var comment: String;
}
然后可以轻松使用
var data = [Note(date: "date", comment: "comment"),Contributors()]
data.append(Note(date: "note1", comment: "comment2"))
data.append(Contributors())
//使用强制转换来识别
if data[0] as Note {
}