2015-06-14 90 views
1

我對Swift非常陌生,現在我正在將我的Objective-C代碼轉換爲Swift。將字典類型添加到Swift中的數組

我宣佈這些屬性:

private var startLocation: UInt? 
private var rangeIndex: UInt? 
private var transaction: Array<Dictionary<String, UInt>>? 
var location: UInt? 

在嘗試把一個Dictionary類型添加到事務陣列,編譯器警告我。

不能調用 '追加' 類型的參數列表 '([字符串:UINT])'

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?])' 
} 

回答

1

!添加到self.rangeIndex,self.locationself.startLocation作爲隱式解包可選,警告將消失。

func beginTransaction() -> Void { 
    var transaction: Dictionary = ["rangeIndex": self.rangeIndex!, 
            "location": self.location!, 
           "startLocation": self.startLocation!] 
    self.transaction?.append(transaction) 
} 
1

這是因爲你的陣列是<String, UInt>但你追加<String, UInt?>

確保它們是相同的。

1

這個警告已經說得很清楚了:transaction內的字典值是UInt,它不能爲零。但你的startLocation,rangeIndex,location可能是零。