我正在嘗試獲取CNLabelValue電話標籤數組的索引值。 我可以遍歷他們,並得到它的方式,但我知道.idex方法將工作一樣想不通的語法後:使用swift我試圖獲得電話號碼標籤數組中的特定標籤的索引值
let labelIndex = mutableContact.phoneNumbers.index(of: <#T##CNLabeledValue<CNPhoneNumber>#>)
我正在嘗試獲取CNLabelValue電話標籤數組的索引值。 我可以遍歷他們,並得到它的方式,但我知道.idex方法將工作一樣想不通的語法後:使用swift我試圖獲得電話號碼標籤數組中的特定標籤的索引值
let labelIndex = mutableContact.phoneNumbers.index(of: <#T##CNLabeledValue<CNPhoneNumber>#>)
可能是你正在尋找這樣的: -
let arr = ["a","b","c"]
if let index = arr.index(where: { (item) -> Bool in
return (item == "c")
}) {
print(index)
}
Output: 2
謝謝然而,我試圖用CNLabeledValue數組,並得到一個錯誤: PhoneLabelsTableViewController.swift:281:18:二進制運算符'=='不能應用於類型'CNLabeledValue
您需要符合這個相等的協議。 –
你應該做這樣的事情:
let idx = mutableContact.phoneNumbers.index(where: { (model) -> Bool in
return if model == YOUR_OBJ
})
這裏,
(model) is of type CNPhoneNumber
並且在if檢查中,您應該放入您想要索引的檢查。
(model) should be compared with your own obj for which you want to filter.
謝謝 - 會試試這個 - 我已經使用迭代和工作,但它是漫長的。 –
如果你需要幫助,很酷的lemme知道。儘量避免迭代。 –
我正在嘗試代碼,但我不明白(模型)會是什麼。 我認爲有以下可能是正確的方法,我只是不明白的語法: 讓IDX = mutableContact.phoneNumbers.index(作者:CNLabeledValue,「iPhone」) 提供了以下錯誤: .... PhoneLabelsTableViewController .swift:280:42:參數標籤'(:,_ :)'不匹配任何可用的重載。 –
var labelIndex = 0
for (i,bod) in mutableContact.phoneNumbers.enumerated() {
print(i,bod.label!)
if bod.label == labelP {labelIndex = i; break}
}
mutableContact.phoneNumbers.remove(at: labelIndex)
的例程遍歷所有CNLabelValues爲.phonenumbers然後測試它們是否匹配labelP(功能參數),並返回(labelIndex = I)匹配的項的索引。
然後mutableContact.phoneNumbers.remove(在:labelIndex)`
請添加關於您的答案的信息 – user7294900
您最好解釋一下您的解決方案,而不是簡單地發佈一些代碼。也許值得一讀[如何寫出一個好答案](https://stackoverflow.com/help/how-to-answer)。 –
嘿,你能不能約你要問什麼/做一個更加清楚一點? –