地道にfor文でループさせても良いのですけれども。SwiftからCスタイルfor文が無くなることですし、「今更for文を使うのはいかがなものか」と思い、他の方法を調べました。
NSArrayのメソッド indexOfObjectPassingTest を使用します。
// 例:Userクラスの配列から、userId == 123のユーザーのindexを得る
NSUInteger index = [userArray indexOfObjectPassingTest:^BOOL(id _Nonnull obj,
NSUInteger idx,
BOOL * _Nonnull stop) {
User* user = (User*)obj;
return user.userId == 123;
}];
※条件がヒットしない場合は、NSNotFoundが返ってきます。