2017-12-28 35 views
1

초보자가 빠르며 초조함 문제가 있습니다. 프로그램이 올바르게 컴파일되고 이 프로그램은 사용자가 입력 한 인년을 기반으로 한 고양이의 나이를 계산하기로되어 있지만, 버튼을 누르면 "Operator"라는 단어와 함께 괄호로 묶인 고양이 년이 추가로 표시됩니다 .?, 즉, Optional(35) 여기 내 코드입니다!"고양이가 35 세입니다."라고 표시해야 할 때 "내 고양이는 선택 품목 (35)입니다"라고 표시되는 이유

@IBOutlet weak var getHumanYears: UITextField! 
@IBOutlet weak var displayCatYears: UILabel! 
@IBAction func calculateCatYears(_ sender: Any) 
{ 
    if let humanYears = getHumanYears.text 
    { 
     var catYears: Int? = Int(humanYears) 
     catYears = catYears! * 7 
     let catYearsString: String = String(describing: catYears) 

     displayCatYears.text = "Your cat is " + catYearsString + " years old" 
    } 
} 

사람이 내가 잘못 알고 있나요 당신의 소중한 의견에 감사드립니다

+1

문자열 설명 방법을 사용하면 안됩니다. 그냥 옵션을 풀고'String (catYears)'를 사용하십시오. –

답변

3

문제는 여기에 있습니다 :

,
String(describing: catYears) 

catYearsOptional<Int>, Optional<Int>Optional(<value>) 또는 nil의 형식으로 설명한다 문자열이다. 그래서 Optional(35)이됩니다.

catYears을 풀어야합니다!

String(describing: catYears!) 

또는 String(describing:) 모두 함께 제거 할 :

if let humanYearsText = getHumanYears.text, let humanYears = Int(humanYearsText) 
{ 
    let catYears = humanYears * 7 
    displayCatYears.text = "Your cat is \(catYears) years old" 
} 
+0

@LeoDabus 편집 됨, OP의 코드가 잘못 된 부분을 지적했습니다. – Sweeper

0

언랩 catYearsString. 사용이 하자 catYearsString : = 문자열 문자열 (설명 :! catYear를) displayCatYears.text = + catYearsString + "세"

출력 "당신의 고양이는"

테스트 코드

var catYears: Int? = Int(7) 
catYears = catYears! * 7 
let catYearsString: String = String(describing: catYears!) 

print("Your cat is " + catYearsString + " years old") 

enter image description here

+1

'catYearsString'을 풀 수 없습니다 ... 선택적인 – Sweeper

+0

@LeoDabus pls check 편집 대답이 아닙니다. –

1

다른 것처럼 catYears는 선택 사항이며, 따라서,이 때문에 var catYears: Int? = Int(humanYears)입니다 언급했다. 그리고 옵션 인 경우 String(describing: ...)Optional(rawValue)을 인쇄합니다.

원하는 것은 가치를 지니고 인쇄 할 때 선택 사항이 아닌지 확인하는 것입니다. 문자열에 Int 값이 100 % 확실한 경우 !을 사용하면됩니다.

그러나 텍스트 필드에 문자가있는 경우 응용 프로그램이 작동하지 않으므로 ! 연산자를 사용하지 않는 것이 좋습니다.

if let text = getHumanYears.text, let humanYears = Int(text) 
{ 
    let catYears = humanYears * 7 
    displayCatYears.text = "Your cat is \(catYears) years old" 
} else { 
    displayCatYears.text = "I don't know!" 
}