My Swift Code Book

Swift 코딩 학습을 기록으로 남겨 추후 개발에 사용하기 위해 기록합니다.

변수

var i = 99
var i : Int = 99 // 형을 명시적으로 선언
// 값없이 선언시 형을 지정해야 함
var j  // 오류
var j: Int // 이상없음
var x = nil // 오류 - 일반적으로 변수값이 들어있는 것이기에 nil은 들어갈수없고 nil을 넣고 싶다면 optional형을 사용함

Optional 형

형선언시 마지막에 ?을 추가한다.

var x: String? = nil

Optional형이 아니면 반드시 값이 존재하며 nil여부를 확인할 필요가 없다. optional 형을 사용시 주의해야할 점은 위와 같이 변수x는 String형값이 들어가야 하지만, 어디까지나 Optional형이며 String형은 아니다. 이를 출력해보면 다음과 같다.

var x: String? = "안녕하세요"
print(x) // => "Optional("테스트")"

즉, Optional형에 아래와 같이 일반적인 String형으로 처리하면 오류가 난다는 것이다.

var x : String? = "안녕하세요"
print(x + " Siri") // 오류

Optional형을 원래 형으로 사용하고 싶은 경우네느 변수뒤에 꼭 !을 추가한다.

print(x! + " Siri") // "안녕하세요 Siri"

Optional Binding (선택적 바인딩)

Optional형 값이 nil이 아니면 값을 대입한다. nil의 경우 false를 리턴한다. 이 때 if문을 사용하여 처리한다.

var x: String? = "안녕"
if var y = x {
   print( s + "하세요")
} else {
   print("nil")
}

Optional Chaining(선택적 체인닝)

메소드 체인에서 optional형이 nil이라도 호출에서 오류를 보여주고 싶지 않은 속성 및 메소드명에 ?을 추가한다.

var x: String? = nil
x?.chracters.count // Error가 되지 않고 nil을 리턴

// 반대로 nil이라면 의도적으로 예외를 발생시키고자 한다면 !을 추가
x!.characters.count // Error

상수

let i = 100
let i: Int = 100 // 명시적 선언

형 종류

  • String = 문자열
  • Character = 1문자
  • Int = 정수
  • Float = 부동소수점 (32비트길이)
  • Double = 부동소수점 (64비트길이)
  • Bool = 참거짓구분
  • Dictionary = 사전형
  • Array = 배열

형 변환



참고로 Int + Float 형태로 서로 다른 형을 합칠 때에는 오류가 나기 때문에 한쪽 형에 맞춰 변환해주어야 한다.

변수를 문자열에서 출력하기



배열(Array)



값 선언이 없는 배열은 형 선언이 필수이다.



배열에 값 추가하기



배열 값 삭제하기



배열과 배열 합치기



배열 사용시 주의해야 할 점은 let으로 선언한 요소는 추가, 삭제, 값변경을 할 수 없다

사전(Dictionary)



빈 사전은 형 선언이 필요하다.



형 지정을 하지 않는 경우 Any를 지정하자.



사전의 값 삭제할 경우



튜플(Tuple)

하나의 변수에 여러가지 값을 저장할 때 이용하지만 값 추가 및 삭제는 할 수 없다.



값 가져오기



반복문



continue (다음 반복)



break (중단하기)



레이블 붙이기



Switch문



if, guard문



guard는 조건을 만족시키지 못할 경우 바로 해당 범위에서 빠지기 위한 처리를 진행한다.



nil검사를 가진 변수는 다음처리에서 사용



reduce

반복할때마다 결과를 다음 반복에서도 사용하고 그것을 마지막에는 리턴값으로 받는 경우에 사용한다

reduce(“초기값”, {(i: “처리내용리턴형”, j: “배열요소형”) -> “리턴형” in “처리내용”})



간단한 사칙연산이라면 아래와 같이 생략도 가능하다.



Map

배열의 각 요소를 반복문에서 꺼내서 어떤 처리를 한 결과를 배열로 리턴한다.

map {(x: “배열요소 형”) -> “처리내용 리턴형” in “처리내용” }



이를 아래와 같이 생략형태로 구현도 된다.



연산자

Optional변수가 nil이라면 다른 값을 넣는다



삼항 연산자



형변환

형변환을 하지 못하면 nil이 들어갈 경우



형변환 하지 못하면 오류일 경우



예외처리

ErrorType을 기준으로 자신의 오류(enum)을 만들어 그것을 체크하도록 한다. 오류가 일어날 부분 처리는 do블록으로 처리한다.



try를 사용하면 다양한 방법으로 오류를 잡을 수 있다.



호출시 오류처리를 맡기는 경우 메소드정의에서 자신이 예외를 던지는 경우



results matching ""

    No results matching ""