의 값과 일치 할 수 없습니다. 새 작업을 신속하게 배우고 정적 테이블보기에서 작업하는 중이며 튜플을 사용하여 어떤 셀을 추적할지 결정했습니다. 가 선택되었습니다. 정말 혼란 무엇 다음과 같은 간단한 코드스위프트 튜플 스위치 케이스 : 유형의 패턴이
let ABOUTPROTECTIONCELL = (section: 1, row: 0)
let cellIdentifier = (section: indexPath.section, row: indexPath.row)
switch cellIdentifier {
case ABOUTPROTECTIONCELL:
print("here")
default:
print("bleh")
}
의 결과는
Expression pattern of type '(section: Int, row: Int)' cannot match values of type '(section: Int, row: Int)'
이 오류 내가 사용할 때 문 대신 "경우"다음과 같은 것이 있습니다 : 그러나 나는 다음과 같은 오류를 받고 있어요 나는 if 문보다는이 더 우아한 발견하면 스위치 문 모든
if (cellIdentifier == CELL_ONE) {
print("cell1")
} else if (cellIdentifier == CELL_TWO) {
print("cell2")
} else if (cellIdentifier == CELL_THREE) {
print("cell3")
}
은 스위치 문이 할 수있는 방법이 있나요 ... 프로그램이 잘 실행 잘 작동? 왜 이것이 효과가 없는지에 대해 매우 궁금합니다. 미리 감사드립니다!
튜플'Equatable'하지 않기 때문에 귀하의 코드는 컴파일되지 않습니다. See [tuple 상수를 switch 문에서 대/소문자로 사용할 수없는 이유] (https://stackoverflow.com/questions/29677991/why-cant-i-use-a-tuple-constant-as-a- case-in-a-switch-statement). –
그들이 같지 않으면 if 문이 컴파일되고 실행되는 이유는 무엇입니까? 그것이 나를 혼란스럽게 만든다. –
튜플에 대해 '=='연산자가 있지만 튜플이 프로토콜을 따르지 않습니다. - 또한 : Equatable 프로토콜은'== operator'의 존재를 보장하지만'=='연산자는 Equatable에 대한 적합성을 의미하지 않습니다 –