2016/ 5/ 6
옵셔널
- 값을 반환하는 과정에서 오류가 발생할 가능성이 있는 값을 옵셔널 타입 객체로 감싼 후 반환 (Optional Wrapping)
// 문자열을 Int로 형변환하면, Optional 타입으로 인식함
var str = “123”
print(Int(str)) // Optional(123)\n
// 옵셔널 강제 해제
var optInt : Int? = 5
print("옵셔널 자체의 값 : \(optInt)") // Optional(3)
print("!로 강제 해제한 값 : \(optInt!)") // 3// 옵셔널 값의 안전한 해제
var str = "123"
let intFromStr = Int(str)
if intFromStr != nil {
print("변환된 값은 \(intFromStr!)입니다.")
} else {
print("값 변환을 실패했습니다.")
}/*
배열과 달리 딕셔너리는 미리 정해진 키 값만 사용되는 것이 아니라 무작위로 키가 사용되므로 키가 있는지 점검이 어려움. 이를 처리하기 위해 딕셔너리가 반환해야 할 데이터를 옵셔널로 감싸서 반환함
*/
var capital = ["KR" : "Seoul"]
print(capital["KR"]) // Optional("Seoul")
print(capital["KR"]!) // "Seoul"// 옵셔널 값의 비강제 해제
var str = "123"
if let intFromStr = Int(str) {
print("변환된 값은 \(intFromStr)입니다.")
} else {
print("값 변환을 실패했습니다.")
}
- 옵셔널 객체의 값을 비교 연산자를 사용하여 비교하거나 값을 할당할 때는 자동으로 옵셔널 타입을 해제하여 비교, 할당함
let optInt = Int("123")
optInt == 123 // truevar optValue01 = Optional(123)
var optValue02 : Int? = 123