我正在Swift中编写一个iPhone应用程序。我有一个将字符串键映射到[MyClass]值的字典。我有一个执行以下操作的功能:
func addItem(object: MyClass) -> Bool {
if self.dict[object.name] == nil {
self.dict[object.name] = [MyClass]()
}
var objectList = self.dict[object.name]!
// Other code here that doesn't matter
objectList.append(object)
return true
}
这里的问题是,当我到达return语句时," objectList"计数为1,但self.dict [object.name]!计数为0.也就是说,objectList实际上是字典中数组的副本,而不是相同的数组。
我想这是有道理的,因为数组是Swift中的值类型,但它非常不方便。有没有人有这个很好的解决方案?我可以强制从词典返回到参考吗?或者我是否需要创建自己的列表类来包装数组或将修改后的数组保存回字典?
答案 0 :(得分:2)
您需要将它附加到字典中的数组:
self.dict[object.name]!.append(object)
正在发生的事情是,Dictionary实例的subscript
返回一个Optional,因为无法保证字典实际上具有您传入的键的值。您可以通过任何一个解包运算符({{1 }}或?
) - 在这种情况下,力量展开是可以的,因为你测试并创建了上面的数组。