2017-08-06 14 views
0

CNLabelValueの電話ラベルの配列のインデックス値を取得しようとしています。 私はそれらを反復し、そのように取得するが、私は.idex方法はただの後に構文を理解することはできません動作します知っている可能性があり:swift amを使用して、電話番号ラベルの配列内の特定のラベルのインデックス値を取得しようとしています

let labelIndex = mutableContact.phoneNumbers.index(of: <#T##CNLabeledValue<CNPhoneNumber>#>) 
+1

ねえ、あなたは、あなたが/尋ねたいことについて、もう少し明確だろうか? –

答えて

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 'および 'String'型のオペランドにバイナリ演算子 '=='を適用できません タイプの問題 –

+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

ありがとうございます - これを試してみます - 私はiteratingを使用して、それは働いたが、それは長い道のりです。 –

+0

あなたが助けを必要とする場合は、クールなレームが分かります。しかし反復を避けてください。 –

+0

私はコードを試していますが、(モデル)が何であるかは分かりません。 私は次は私がちょうど構文を理解していない正しいアプローチかもしれないと思う: はIDX = mutableContact.phoneNumbers.indexてみましょう(の:CNLabeledValue、「iPhone」) は、次のエラー与える: を.... PhoneLabelsTableViewController .swift:280:42:引数ラベル '(of :, _ :)'は使用可能なオーバーロードと一致しません。 –

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) 

.phonenumbersのすべてのCNLabelValuesを反復処理し、次いで、それらがlabelP(関数パラメータ)と一致した場合にテストし、一致したアイテムの(labelIndex = I)インデックスを返すルーチン。

その後、mutableContact.phoneNumbers.remove(時:labelIndex) `

+0

あなたの答えに関する情報を追加してください – user7294900

+0

単にコードを投稿するのではなく、あなたの解答を説明してください。たぶんそれは[良い答えを書く方法](https://stackoverflow.com/help/how-to-answer)を読む価値があります。 –

関連する問題