2016-09-07 3 views
-3
다음 문은 잘 컴파일

경우 [1==1] 경우 그것은 동일한 오류가 발생목표 - C : 문을 사용하거나

if ([textField ==_telField] || [1==1]) { 
} 

예상 식별자 :

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string 
    if ([textField ==_telField]) { 

} 

그러나 다음 문은 오류가 발생합니다 [textField==_mobField]

누군가가 여기에서 무슨 일이 일어나고 있는지, 여러 개의 OR 조건부를 여기에 행?

+4

첫 번째 진술은 "잘 컴파일됩니다."사실 실제로 컴파일되지 않습니다. – matt

+2

그리고 '1 == 1'의 요점은 무엇입니까? 그것은 항상 true 일 것이고 이는'if' 문이 항상 참이라는 것을 의미합니다. 이것은'if' 문에 아무런 포인트가 없다는 것을 의미합니다. – rmaddy

+0

1 == 1은 항상 사실 일 수있는 자리 표시 자입니다. 그것이 요점입니다. 그러나 '예상 된 식별자'오류가 발생합니다. 문제는 구문에서 오류 '예상 식별자'를 던져 다른 테스트를 연결하는 방법입니다. – user6631314

답변

1

을 매트의 대답 @ 떨어져 구축하기 위해 : 당신은 괄호와 대괄호를 착각

을 :

if ([textField ==_telField] || [1==1]) { 
} 

if ((textField ==_telField) || (1==1)) { // Parenthesis instead 
} 

또는

이어야한다
if (textField ==_telField || 1==1) { // Nothing is fine too 
} 

당신은 사각형과 같이 다른 언어에서 함수를 호출하기위한 이중 괄호를 사용하는 것과 비슷 목표 - C에서 괄호 생각할 수 : 또한

//Objective-C 
[self myFunction] 

//Swift 
self.myFunction() 

, @rmaddy가 지적했듯이, 1==1 것이다 항상 true를 반환하므로 if 문이 필요하지 않습니다.

+0

좋아요, 대괄호를 고정 된 괄호로 바꾸면 문제가 해결됩니다. BTW,이 답변에서 사각형 괄호에 대한 아이디어가 있어요 .http : //stackoverflow.com/questions/10189809/objective-c-if-statement-with-or-condition.아마도 차이점은 isEqualToString 대신 == – user6631314

+1

@ user6631314 "차이는 아마도"아마도 "아마"입니다. 그렇지. '[...]'이 메소드 호출을위한 것이라는 것을 이해하지 못하거나 'isEqualToString :'이 메소드 호출이고'=='이 표현식의 일부일 뿐이라면, C 및 Objective-C를 사용하여 코드를 작성해야합니다. Objective-C가 조금 어렵 기 때문에 Objective-C 대신 Swift를 배워야합니다. – matt

+0

@ user6631314, 나는 매트와 완전히 동의합니다. Objective-C 대신 Swift를 사용해보십시오. 훨씬 간단합니다. – WMios

2

대칭 괄호는 Objective-C 표현식에 넣을 수 없습니다. 대괄호는 Objective-C에서 매우 특정한 의미를 지니 며, 이러한 의미는 여러분이하는 일을 포함하지 않습니다. 그냥 삭제 :

if (textField == _telField || 1 == 1) { 
+0

그래, (textField == _telField || 1 == 1) {(textField == _ mobField || 1 == 1) 오류가 발생하지 않는다면 오류가 발생하지 않고 비슷한 결과를 나타냅니다. if (textField == _ telField || textField == _ mobField)이며 예상되는 식별자 오류 – user6631314

+1

이 여전히 발생합니다. 그런데 "정말로"원하지 않는 코드 주위에 질문을 작성하는 것은 어리석은 일이었습니다. – matt

+0

어리석은 것은 코드가 스스로 테스트하지 않고 컴파일하지 않았다는 것이 었습니다. 질문을주의 깊게 읽으려면 [1 == 1]이 [textField == _ mobField]로 바뀌면 똑같은 오류가 발생합니다. 저는 진술이 사실 일 수있는 경우를 테스트하기 위해 1 == 1을 넣었습니다. 그러나 귀하의 답변을 제공해 주셔서 감사 드리며, 제 문제를 해결 한 WMios를 수락했습니다. – user6631314