iOS 복습

유재우·2022년 1월 5일
0

튜플

  • 튜플이란 여러값을 하나의 개체에 일시적으로 묶는 방법이다.
  • 튜플 안에 있는 값들은 타입에 제약이 없으며 동일한 타입일 필요 또한 없다.
let ATuple = (3.14, 20, "재우")
  • 인덱스를 통해 간단히 접근이 가능하다.
let ATuple = (3.14, 20, "재우")
var AIndex = ATuple.1
print(AIndex)

20

옵셔널 타입

  • 옵셔널 타입은 다른 언어에는 없는 Swift언어의 유일한 개념이다,
  • 값을 추출할 때 오류가 발생할 것 같은 값을 옵셔널 타입이라는 객체로 감싸서 추출을 한다.
ex)
int("32")      ->  32가 아닌 Optional(32)으로 반환
int("jaewoo")  ->  아무런 값도 없는 nil값으로 반환
  • 옵셔널 타입의 변수선언은 선언부 뒤에 "?"문자를 사용하여 선언한다.
var option: int?

option 변수는 정수 값을 갖거나 nil(아무 값이 없음)값을 반환 할 수 있다.


  • 강제 언래핑
    옵셔널 타입으로 감싸져 있는 값을 "?", "!"를 사용하여 강제로 풀어주는 작업을 뜻한다.
ex) 
var option: int?
option = 25
print(option)     ->  Optional(25)
print(option!)    ->  25

? -> 자료형 뒤에
! -> 변수명 뒤에

  • 강제 언래핑을 사용하려는 값이 nil값이 아니라는 전제에 사용해야 한다.
var option: int?
option = 25
if x != nil {
   print(option!)
   }
else {
   print("nil")
   }
  • 가장 좋은 언래핑 방법은 옵셔널 바인딩이다.
if (let or var) letOrVarName = optName {
- 옵셔널 변수에 값이 있다면 언래핑 하여 일반 (상,변)수인 letOrVarName에 대입 하고 if문을 실행한다
- 만약 값이 없다면 if문의 조건이 거짓이 되서 if문을 실행하지 않는다.
}

형 변환

  • as로 upcasting
자식객체 as 부모클래스  -> 자식이 추상화된다.
  • as!, as? 로 downcasting
부모객체 as! 자식클래스 -> 일반 타입으로 반환 , 다운캐스팅이 반드시 성공한다는 확신이 있을 때
부모객체 as? 자식클래스 -> 옵셔널 타입으로 반환, 확신이 없을 때

*Nil 합병 연산자(Nil-Coalescing Operator)

  • 옵셔널변수 ?? nil 일때 할당 되는 값을 정해주는 연산자이다.
  • 옵셔널 변수의 값이 nil일 때 ?? 다음값으로 할당된다.
    이해가 잘 안되면 ?? 다음 값이 디폴트 값으로 ?? 앞에 나오는 옵셔널 변수가 nil일 경우에 대비하여 디폴트 값을 출력할 수 있게 하는 연산자라고 기억을 하자
ex)
let firstName = "Yoo"
var lastName: String?
var myName = lastName ?? firstName  // lastName의 값이 nil이므로 ?? 뒤에 있는값이 할당
print(myName)                         ->Yoo
lastName = "JaeWoo"
var myName = lastName ?? firstName // lastName의 값이 nil이 아니므로 그대로 출력
print(myName)                         ->JaeWoo

*Guard문

  • 조건식이 거짓일 때 실행되는 구문이다.(return을 이용하여 빠져 나올 수 있다.)
  • 안에서 쓰던 변수들을 밖에서도 사용 가능하다.
    guard문 형태)
    guard <불리언 표현식> else {
    	표현식이 거짓일 경우에 실행될 코드
    	<빠져 나갈 구문>
    	}
    표현식이 참일 경우에 실행될 코드
ex)
func yourAge(year: Int?) {
    guard let age = year, age < 26 else { 
        print("저보다 나이가 ",year! - 25, " 만큼 많으시군요") // 조건식이 거짓일 때
        return
    }
    print("저와의 나이차가 ",25 - year!," 만큼 나는군요.")  
    // 조건식이 참일 때, 변수 year을 사용할 수 있다.
}
yourAge(year: 26)     

참고영상
15:18 까지 학습하였습니다.

profile
끝없이 탐구하는 iOS 개발자 유재우입니다!

0개의 댓글