私のビュー内で特定のサブビューを見つけるために、次のコードを使用しています。正常に動作し、for
ループは1回だけ実行されます。これは、where
句を満たすサブビューが1つしか見つからないためです。Swift:スーパービューでのビューの検索(forループなし)
for view in boardView.subviews where (view as? PlayingCardView)?.position.location == source.
&& (view as! PlayingCardView).position.column == source.column
&& (view as! PlayingCardView).position.row >= source.row
しかし実際には何もしていないときに私はここでループを実行しているのが奇妙に思えます。私は何を意味するのか知っていますか?
「検索」する方法はありますか? subviews.index(of:)
を使用し、where
句などの条件を使用する方法と同様に、
また、私はこのように同じコードを実行することができることを知っている:
for view in boardView.subviews {
if let cardView = view as? PlayingCardView {
if cardView.position.location == source.location
&& (view as! PlayingCardView).position.column == source.column
&& (view as! PlayingCardView).position.row >= source.row {
// Do stuff
}
}
}
は計算より速く、次のいずれかの方法か?それは、すぐに停止します
let view = boardView.subviews.first {
guard let cardView = $0 as? PlayingCardView else { return false }
return cardView.position.location == source.location
&& cardView.position.column == source.column
&& cardView.position.row >= source.row
}
// do stuffs to `view`
:
ありがとうございます、これはかなり完璧ですね! –
これは完璧なようです...しかし、私はエラーが発生しています: –
何がエラーですか? – Callam