2012-03-01 3 views
1

iOS 플랫폼에서 프로그래밍 세계를 뛰어 들었고 처음 Hello World 앱을 만들었습니다.Hello world app

Xcode에서 더 많은 프로그래밍을 배우기 위해 추가 기능을 앱에 추가하고 싶습니다. 간단히 말해, 앱은 입력란에 @hilo 입력란을 추가하고 아무 것도 삽입하지 않으면 Hello World!라고 말합니다. (세계를 추가합니다!)

이제는 특정 입력을 인식하도록 앱을 지정합니다. 따라서 특정 이름 (김)을 입력하면 표준 응답 "hello Kim!"이 제공되지 않습니다. 하지만 예를 들어 안녕하세요 소녀!.

"world!"를 추가하는 코드입니다. "hello"다음에 입력을 공백으로두면 여분의 기능을위한 추가 코드를 추가 할 곳을 찾았습니다.

- (IBAction)changeGreeting:(id)sender { 

    self.userName = self.textField.text; 

    NSString *nameString = self.userName; 
    if ([nameString length] == 0) { 
     nameString = @"World"; 
    } 
    if (String == "Kim") { 
     nameString = @"Girl"; 
    } 

    NSString *greeting = [[NSString alloc] initWithFormat:@"Hello, %@!", nameString]; 
    self.label.text = greeting; 
} 

내가 두 가지 오류를 얻을 "예상 표현"과 "의 사용 :

이 내가 생각 해낸 것입니다 나는 HellowWorldViewController.m

- (IBAction)changeGreeting:(id)sender { 

    self.userName = self.textField.text; 

    NSString *nameString = self.userName; 
    if ([nameString length] == 0) { 
     nameString = @"World"; 
    } 

    NSString *greeting = [[NSString alloc] initWithFormat:@"Hello, %@!", nameString]; 
    self.label.text = greeting; 
} 

에 대해서 이야기하고 코드입니다 선언되지 않은 식별자 '문자열'; 'NSString'을 의미합니까?

답변

3

변경 :

:

String이 프로그램에 아무것도 의미하지 않았다 , 문자열이라는 어떤 변수 또는 클래스가 없습니다 :

if ([nameString isEqualToString:@"Kim"]) { nameString = @"Girl"; } 

는 두 가지 문제가있다. 아마도 nameString을 의미했을 것입니다.

문자열을 ==과 다르게 비교해야하므로 대신 isEqualToString을 사용하십시오.

==은 신원을 확인합니다. 즉, 두 객체가 같은 객체이고 메모리의 같은 주소를 가리키는 지 여부입니다.

isEqualTo 기본적으로 동일한 작업을 수행하지만 다른 평등 비교를 수행하려면 무시할 수 있습니다. isEqualToString은 이와 비슷하지만 더 명확합니다.


이 코드는 유일한 문제는 아니지만 가장 분명합니다.

@ 짐이 다른 문제를 발견했습니다. 목표에있는 문자열 -c는 @ 기호로 시작합니다.

+0

thx 제임스 (James James), 명확한 설명을 위해 코드를 작성했습니다. – user1242574

+0

문제 없습니다. 가장 도움이된다고 생각되면 제 답변을 정확하게 표시하는 것을 잊지 마십시오. –

0

문자열 == "김"

은 당신이 어딘가에 문자열 변수 정의가 있습니까?

1
if (String == "Kim") { 

이 줄에는 몇 가지 문제가 있습니다.

Objective-C의 문자열 리터럴의 형식은 @"foo"이며 @이 누락되었습니다.

nameString@"Kim"을 비교하고 싶지만 단순히 String을 사용하고있는 것 같습니다. 그것은 당신이 사용하고있는 변수의 이름이 아닙니다.

NSString의 인스턴스를 ==과 비교할 수 없습니다.이 인스턴스는 개체이며 포인터의 메모리 주소를 비교하는 것뿐입니다. 문자열을 비교하려면 문자열 중 하나의 isEqualToString: 메소드를 사용해야합니다. 예 :

if ([nameString isEqualToString:@"Kim"]) {