我对Swift很新,我现在将Objective-C代码转换为Swift。
我声明了这些属性:
private var startLocation: UInt?
private var rangeIndex: UInt?
private var transaction: Array<Dictionary<String, UInt>>?
var location: UInt?
尝试在事务数组中添加Dictionary
类型时,编译器会发出警告。
无法调用&#39;追加&#39;使用类型&#39;([String:UInt?])&#39;
的参数列表
func beginTransaction() -> Void {
var transaction: Dictionary = ["rangeIndex": self.rangeIndex,
"location": self.location,
"startLocation": self.startLocation]
self.transaction?.append(transaction) //Warn: Cannot invoke 'append' with an argument list of type '([String: UInt?])'
}
答案 0 :(得分:1)
这是因为您的数组是<String, UInt>
,但您追加<String, UInt?>
确保它们是相同的。
答案 1 :(得分:1)
此警告说得非常清楚:transaction
内的字典值为UInt
,且不能为零。但您的startLocation
,rangeIndex
,location
可能为零。
答案 2 :(得分:1)
将!
添加到self.rangeIndex
,self.location
和self.startLocation
作为隐式解包的可选项,警告随后会消失。
func beginTransaction() -> Void {
var transaction: Dictionary = ["rangeIndex": self.rangeIndex!,
"location": self.location!,
"startLocation": self.startLocation!]
self.transaction?.append(transaction)
}