我已檢查此SO answer以查找已棄用的find
方法的解決方案,但該解決方案適用於單個陣列。在我的項目中,我有兩個都是集合類型的參數。通過重構,我收到了我們熟悉的條件綁定錯誤。使用兩個集合類型參數查找項目索引
我已經嘗試刪除條件綁定,並使用index(of:)
作爲在我引用的答案,但因爲我沒有像String類型的單個元素的工作自然我得到元組錯誤。
如果方法不能在元組上調用,爲什麼原始的find
方法能夠在下面的Swift 2行中調用元組?
class MoneyPickerTableViewController: UITableViewController {
var money: [String: String]
var purchaseOrder: [String]
var chosenKey: String = USDPreferences.shared().object(forKey: kUSDChosenMoneyKey) as! String
// Swift 2
if let index = find(purchaseOrder, chosenKey) {
let indexPath = NSIndexPath(forRow: index, inSection: 0)
tableView.selectRowAtIndexPath(indexPath, animated: animated, scrollPosition: .Middle)
}
navigationController?.setNavigationBarHidden(false, animated: animated)
}
夫特3
let collections = (purchaseOrder, chosenKey) as ([String], String)
let index = collections.index(of:)
曾經是,把一個集合作爲第一個參數的自由功能
您不能調用元組的方法,只是期望該方法應用於每個元組成員。這並不是Swift的工作方式 – Alexander
謝謝。我意識到這一點。這就是爲什麼我說「自然我得到這些錯誤」。我正在尋找一種方法來索引這兩個集合。原始代碼使用'find(purchaseOrder,chosenKey)'進行索引。對於爲什麼不現在呢,find方法在元組之前沒有問題? – tymac
這不是一個元組,它是一個包含兩個參數'purchaseOrder'和'chosenKey'的函數調用。 – Alexander