반응형
Swift와 함께 isKindOfClass 사용
Swift lang을 가져 오려고하는데 다음 Objective-C를 Swift로 변환하는 방법이 궁금합니다.
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
[super touchesBegan:touches withEvent:event];
UITouch *touch = [touches anyObject];
if ([touch.view isKindOfClass: UIPickerView.class]) {
//your touch was in a uipickerview ... do whatever you have to do
}
}
보다 구체적으로, 나는 isKindOfClass
새로운 구문에서 사용하는 방법을 알아야 합니다.
override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
???
if ??? {
// your touch was in a uipickerview ...
}
}
올바른 스위프트 연산자는 is
다음과 같습니다.
if touch.view is UIPickerView {
// touch.view is of type UIPickerView
}
물론, 새로운 상수에 뷰를 할당해야한다면 if let ... as? ...
, 케빈이 언급 한 것처럼 구문이 당신의 소년입니다. 그러나 값이 필요하지 않고 유형을 확인하기 is
만하면 연산자를 사용해야합니다 .
override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
super.touchesBegan(touches, withEvent: event)
let touch : UITouch = touches.anyObject() as UITouch
if touch.view.isKindOfClass(UIPickerView)
{
}
}
편집하다
@Kevin의 답변 에서 지적했듯이 올바른 방법은 선택적 유형 캐스트 연산자를 사용하는 것 as?
입니다. 자세한 내용은 Optional Chaining
하위 섹션 섹션을 참조하십시오 Downcasting
.
편집 2
사용자 @KPM 의 다른 답변 에서 지적했듯이 is
연산자를 사용하는 것이 올바른 방법입니다.
수표를 결합하여 하나의 명세서로 캐스트 할 수 있습니다.
let touch = object.anyObject() as UITouch
if let picker = touch.view as? UIPickerView {
...
}
그런 다음 블록 picker
내에서 사용할 수 있습니다 if
.
나는 사용할 것이다 :
override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
super.touchesBegan(touches, withEvent: event)
let touch : UITouch = touches.anyObject() as UITouch
if let touchView = touch.view as? UIPickerView
{
}
}
새로운 Swift 2 구문을 사용하는 또 다른 방법은 guard를 사용하여 하나의 조건에 중첩시키는 것입니다.
guard let touch = object.AnyObject() as? UITouch, let picker = touch.view as? UIPickerView else {
return //Do Nothing
}
//Do something with picker
참고 URL : https://stackoverflow.com/questions/24019707/using-iskindofclass-with-swift
반응형
'IT story' 카테고리의 다른 글
숭고한 텍스트에서 공백 들여 쓰기를 수정 / 변환하는 방법? (0) | 2020.04.19 |
---|---|
루비에서 문자열을 기호 가능으로 변환 (0) | 2020.04.19 |
npm 설치 오류-MSB3428 : Visual C ++ 구성 요소“VCBuild.exe”를로드 할 수 없습니다 (0) | 2020.04.19 |
Javascript에서 하루를 시작하고 끝내는 방법? (0) | 2020.04.19 |
루비에서 선행 0을 어떻게 출력 할 수 있습니까? (0) | 2020.04.19 |