ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 200914 - TIL
    TIL/2021 2020. 9. 15. 16:50

    Swfit 문법

     

    Optional에 대해서 공부했다. 처음에는 어려운 개념이었는데 계속 반복을 하다 보니 이해가 됐다. 가장 기억해야 할 점은 !은 내가 코드에 작성하는 일은 없어야 한다. 추출은 Optional  binding으로 처리를 하자.

    • Non-optional은 사용하기 전에 값을 가져야 한다.
    • nil: 값을 저장하지 않는다는 것을 표현하는 키워드
    • Unrapping
    • ! (Forced Unwrapping Operator)
    • Optional Binding
    • guard 구문을 이용한 Optional Binding
    • IUO ( Implicitly Unwrapping Optionals)
    • ?? (Nil-coalescing Operator)
    • Optional Chaining
    • Chaining

    nil-coalescing Operator인 ?? 과 삼항연산자 ?  :  의 사용을 잘 구분해야 한다. ?? 은 조건을 분기할 때 사용하는 연산자가 아니다.

     

     

     

     

     

    Function에 대해 공부했다.

    • Parameter
    • Argument
    • Argument rabel
    • Return
    • Funtion lifecycle
    • Parameter dafualt value
    • Inout parameter
    • Variadic parameter
    • Function type
    • Function notation
    • (), Void

     

    Function과 Method는 다르다는 것을 기억해야 한다. 

    Funcion

    1. {} 밖에서 정의
    2. 함수안에서 정의
    3. 메서드 안에 정의

    Method

    1. 타입(열거형, 구조체, 클래스)의 {}에 정의

     

     

    Argument와 Parameter는 자세히 들어가면 다른 개념이다.

    func add(_ a: Int, _ b: Int) -> Int {
        return a + b
    }
    
    add(10, 20)

    Argument는 함수를 호출할때 실제 사용하는 값 : 10, 20

    Parameter는 argument를 받아 함수 내부에서 사용되는 값: a, b

     

     

    Variadic parameter를 호출할때  argument와 parameter를 구분 못하였는데 공부를 하고 이해했다.

    func sum(_ nums: Int...) {
        var sum = 0
        
        for num in nums {
            sum += num
        }
        
        print(sum)
    }
    
    sum(1, 2) //argument 2개, parameter 1개

     

     

    Function type에서 () -> () 에서 뒤 ()는 Void지만 앞 ()은 Void가 아니라 파라미터가 없다를 뜻한다.

     

     

     

    iOS

     

    새로운 특별한 것을 공부하지는 않았고 배운 문법을 적용해보는 연습을 했다.

     

     

    계산기 앱

    사용자가 원하지 않는 문자,숫자를 입력했을 때 경고문을 해야 하는데 경고창을 어떤 방식으로 작성해야 의미가 잘 전달되면서 사용자의 기분을 상하지 않게 할까 고민을 했다. 더 좋은 방법이 떠오르면 수정해야겠다.

     

     

     

        guard let rightStr = rightField.text, let rightNum = Double(rightStr)  else {
                //경고창
                presentAlert(title: "⚠️", message: "오른쪽 칸에 숫자를 입력해주세요.")
                rightField.becomeFirstResponder()
                return
            }

    오른쪽 텍스트에 숫자가 입력이 안됐으면 오른쪽 텍스트에 커서가 오게 만들었는데 현재 커서 위치가 왼쪽이나 중간에 있는 상태에서 입력을 안 하고 계산을 누르면 이동을 안 하고 현재 커서에 위치했다. 문제가 없어 보이는데 이유를 고민해봐야겠다.

     

    200916추가 : 순서가 잘못됐다. 경고창이 뜨면 컨트롤 할 수 없는 상태가 된다.

        guard let rightStr = rightField.text, let rightNum = Double(rightStr)  else {
                //경고창
                rightField.becomeFirstResponder()
                presentAlert(title: "⚠️", message: "오른쪽 칸에 숫자를 입력해주세요.")
                return
            }

    정상적으로 작동됐다. 전에 공부한 내용인데 까먹었다니ㅠㅠ 반성하자. [각주:1]

     

     

     

    그 외

    공부 외 다른 시간을 많이 쓰게 만드는 워드프레스에서 사용이 더 쉬운 티스토리로 옮겼다.

    1. 200916추가 [본문으로]
    728x90

    'TIL > 2021' 카테고리의 다른 글

    200917 - TIL  (1) 2020.09.18
    200916 - TIL  (1) 2020.09.17
    200910 - TIL  (0) 2020.09.15
    200909 - TIL  (0) 2020.09.15
    200908 - TIL  (0) 2020.09.15
Designed by Tistory.