2017-11-23 4 views
0

私はiPhoneアプリを作っていましたが、今はMacアプリを作る必要があります。 私はCocoaフレームワークに切り替える必要があります。インデックスオブココア

Cocoaのarray.index(of:)に類似したものはありますか?

のiOS例:

let string = "Hello.World" 
let needle: Character = "." 
if let idx = string.characters.index(of: needle) { 
    let pos = string.characters.distance(from: string.startIndex, to: idx) 
    print("Found \(needle) at position \(pos)") 
} 
else { 
    print("Not found") 
} 

私は問題を抱えている実際のコードはここにある:

func checkBoxTapped(_ sender: NSButton) { 
    if (sender.state == 1) { 
     self.selectedReferrals.append(self.referralApplicationList[sender.tag]) 
    } 
    if (sender.state == 0) { 
     // Remove 
     // self.referralApplicationList[sender.tag] 
     // let foofoo = self.referralApplicationList.indexOf(self.referralApplicationList[sender.tag]) 
    } 
} 
+0

あなたは何をしようとしていますか?あなたは何のインデックスを見つけようとしていますか? –

+0

私はチェックボックス付きのアイテムのリストを持っています。ユーザーに特定のアクションのために追加する必要があるものを確認させます。私は、ユーザーが配列から項目を削除することもできるようにしたい。 –

+1

問題のあるコードを含めることはできますか? –

答えて

0

あなたの質問は一切のiOS対ココアやMacOSとは何の関係もありません。実際にあなたが求めているのは、Swift配列のindex(of:)関数を取得する方法です。その答えは、配列内の要素がEquatableである必要があります。

あなたのiOSの例では、charactersは、のインスタンスであり、明示的にindex(of:)の機能を持っています。

Macの例では、十分な情報を提供していないため、selectedReferrals変数は、おそらくのものと思われます。例えば[Referral]である。 index(of:)の場合、ReferralタイプはEquatableプロトコルを実装する必要があります。それ以外の場合は、希望するものを見つけるためにindex(where:)のようなものを使用する必要があります。