[iOS-Swift] 스위프트에서 사용자 입력받기

TIL 14일 차 - Swift 문법 사용자 입력받기 readLine()

스위프트에서 readLine()은 콘솔에서 한 줄의 문자열(String)값을 입력받는 함수이다.

즉 사용자가 엔터를 치기 전까지의 입력한 내용을 가져오게 된다.

반환 타입은 String?(옵셔널)로 입력이 없거나 실패하게 되면 nil값을 가지게 된다.

 

 

대표적인 예제

print("이름을 입력하세요: ")

let name = readLine()

print("입력한 이름은 \(name)")
// name이 옵셔널이므로 경고

사용자가 아무것도 치지않고 입력하는 경우와 입력 스트림이 종료되는 경우에 앱이 터질 수 있어서

스위프트는 안전하게 옵셔널로 반환하게 만들었다 ^^

 

앱이 아니라 공부하는 내속이 터질 거 같다 여태배운언어중에 이렇게 입력하나 받는 거에도 깐깐스러운 언어는 난생처음 봄 진심으로

 

 

그렇다면 올바르게 사용하는 법엔 무엇이 있을까?

 

 

(1) if let으로 안전하게 받기

print("이름을 입력하세요: ")

if let name = readLine() {
	print("안녕하세요, \(name)님~")
} else {
	print("입력이 없습니다.")
}

 

(2) guard let으로 받기

print("이름을 입력하세요: ")

guard let name = readLine() else {
	print("입력이 없습니다.")
    exit(0)
}

print("안녕하세요, \(name)님~")

 

(3) 숫자 입력받기

print("나이를 입력하세요: ")

if let input = readLine(),
   let age = Int(input) { // 중첩된 옵셔널 바인딩 한줄로 줄여씀
    print("내년에는 \(age + 1) 살입니다.")
} else {
	print("숫자를 입력해주세요.")
}

Int(input) 실패하면 nil 반환 (따라서 해당값도 옵셔널 Int)

Int("123") // 123
Int("일이삼") // nil