2017-08-06 51 views

回答

0

可能是你正在尋找這樣的: -

let arr = ["a","b","c"] 
if let index = arr.index(where: { (item) -> Bool in 
    return (item == "c") 
}) { 
    print(index) 
} 

Output: 2

+0

謝謝然而,我試圖用CNLabeledValue數組,並得到一個錯誤: PhoneLabelsTableViewController.swift:281:18:二進制運算符'=='不能應用於類型'CNLabeledValue '和'字符串' 的操作數因此它來降至一個類型問題 –

+0

您需要符合這個相等的協議。 –

0

你應該做這樣的事情:

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.

+0

謝謝 - 會試試這個 - 我已經使用迭代和工作,但它是漫長的。 –

+0

如果你需要幫助,很酷的lemme知道。儘量避免迭代。 –

+0

我正在嘗試代碼,但我不明白(模型)會是什麼。 我認爲有以下可能是正確的方法,我只是不明白的語法: 讓IDX = mutableContact.phoneNumbers.index(作者:CNLabeledValue,「iPhone」) 提供了以下錯誤: .... PhoneLabelsTableViewController .swift:280:42:參數標籤'(:,_ :)'不匹配任何可用的重載。 –

0
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)`

+0

請添加關於您的答案的信息 – user7294900

+0

您最好解釋一下您的解決方案,而不是簡單地發佈一些代碼。也許值得一讀[如何寫出一個好答案](https://stackoverflow.com/help/how-to-answer)。 –

相關問題