ios/swift
[Swift] String을 Int로 변환할 때 왜 Optional<Int>타입이 될까?
changjaemun
2023. 10. 2. 23:36
let arr = ["2000","09","06"]
arr을 for문으로 Int로 변환하려는 과정에서 생긴 일이다.
import Foundation
let str = ["2000","09","06"]
var newStr:[Int] = []
for i in str{
newStr.append(Int(i))
}
코드는 이렇게 작성했다. 그런데 사진과 같은 에러 메세지가 나왔다.
엥? 난 옵셔널을 쓴 적이 없는데 왜 언래핑을 하라고 하는거지,,, 이해할 수 없었다.
이유는 문자열을 정수로 변환하는 과정에 있었다.
Int로 문자열을 정수로 변환할 때, 문자열이 정수로 완벽하게 파싱될 수 있어야 한다.
하지만 만약 문자열이 유효한 정수가 아니라면, 변환은 실패하고 nil을 반환한다.
따라서 예시와 같은 문제를 해결하려면 옵셔널 언래핑을 해주면 된다.
import Foundation
let str = ["2000","09","06"]
var newStr:[Int] = []
for i in str{
if let int = Int(i){
newStr.append(int)
}
}
print(newStr)
// result newStr = [2000, 9, 6]