swift & iOS 63

[swift] guard...else...

https://docs.swift.org/swift-book/LanguageGuide/ControlFlow.html 출처는 위 swift 공식문서의 Control Flow에서 Early Exit 부분이다. 아래의 설명과 예시는 모두 위 주소에서 가져온 것이다. guard는 if문에서 else 부분에 해당한다. if문은 조건이 참이면 if 부분이, 거짓이면 else 부분이 실행되는데 guard는 그 반대라고 볼 수 있다. guard 조건이 거짓이면 guard문의 else {...} 부분이 실행되고 참이면 else {...} 다음으로 나오는 부분이 실행된다. 공식문서에서 나오기를 if {...} else {...} 보다 guard를 사용하는 것이 더 읽기 편하다고 한다. (가독성 좋음) 자바스크립트 할때도 ..

swift & iOS/swift 2022.01.16

[swift] switch문 case에 조건 달기 (where 키워드)

https://docs.swift.org/swift-book/LanguageGuide/ControlFlow.html#ID134 swift 공식문서에서 switch where 키워드 관련 부분 swift의 switch 문에서는 아래처럼 case에 tuple을 사용할 수도 있고 변수에 튜플 값을 바인딩 할 수도 있고(x, y에 튜플 값이 하나씩 들어감) where 키워드를 사용하여 case 안에서 또 다른 조건을 추가할 수 있다. // 출처: https://docs.swift.org/swift-book/LanguageGuide/ControlFlow.html#ID134 let yetAnotherPoint = (1, -1) switch yetAnotherPoint { case let(x,y) where x ==..

swift & iOS/swift 2022.01.16

[Swift] 정수 나누기 (9 나누기 10을 했는데 0이 나오다)

자바스크립트를 하던 나는 0.9를 얻기 위해 당연하게도 9 / 10 을 했다. 자바스크립트라면 분명 0.9 였을텐데 스위프트에서는 0이 나왔다. Int 나누기 Int는 Int 라는 것이다. 아 그러면 9 / 10을 Float로 감싸면 되겠다^^ 싶었지만 여전히 0이 나왔다. 9 / 10이 0이었는데 0을 Float로 감싸봤자 0.0이 나오는 것이다. 그래서 9 / 10 으로 0.9를 얻으려면 각 숫자를 Float로 만들고 나서 나눠야 한다. print(Float(9) / Float(10)) // 0.9 // 아니면 애초에 Float 변수들을 선언하고 그걸 사용해도 된다 let a: Float = 9 let b: Float = 10 print(a / b) 만약 내가 Int를 얻고 싶으면 재료로 써먹는 숫자..

swift & iOS/swift 2022.01.14

[swift] 타입 캐스팅 (형 변환)

https://youtu.be/V6-WmAh4Y1E?list=PLJqaIeuL7nuFbWKMhG8-xLzF1T7gIPr8Z 요새 이 채널에서 swift, ios 개발 영상을 열심히 보고 있다. 매번 swift 로 올리는 글도 이 채널의 영상들을 보고 정리하는 것이다. 대학교 강의인 것 같은데 요새는 유튜브에서 여러 강의들이 영상으로 올라오니 무엇이든 배우기 좋은 것 같다. 형 변환(casting)은 as 라는 키워드를 사용한다. 형 변환에는 upcasting, downcasting이 있는데 위를 부모 클래스 아래를 자식 클래스 라고 생각하면 upcasting, downcasting이 무엇인지 쉽게 추측할 수 있다. upcasting은 어떤 객체를 부모 클래스의 객체로 형 변환 하는 것이고 (부모 클래스

swift & iOS/swift 2022.01.10

[swift] Any, AnyObject

Any 모든 인스턴스를 다 표현 클래스, 구조체, 열거형, 함수 모두 가능 let arr: [Any] = [1, 2, "ha", true] AnyObject 클래스의 인스턴스만 표현함 (구조체 x , 열거형 x) protocol 중에 AnyObject 인 경우가 있는데 클래스에서만 채택되도록 하기 위해서임 // 아래처럼 작성할 수 없음. Int, String, Boolean 모두 구조체이기 때문 let arr: [AnyObject] = [1, 2, "ha", true] 포함하는 정도로 보자면, Any > AnyObject > NSObject

swift & iOS/swift 2022.01.10

[swift] 옵셔널 optional 간단 정리

참고: https://www.youtube.com/watch?v=V6-WmAh4Y1E&list=PLJqaIeuL7nuFbWKMhG8-xLzF1T7gIPr8Z&index=26 옵셔널(optional)은 변수/상수에 아무런 값이 할당되지 않는 상황을 안전하게 처리하기 위한 방법이다. 그리고 옵셔널 타입이어야 nil을 할당할 수 있다. var a = nil 이렇게 작성하면 에디터에 에러가 나타난다. a가 옵셔널 타입임을 명시해준 후에야 nil을 할당할 수 있다. var a : Int? a라는 옵셔널 Int 형의 변수를 선언한 것이다. 이 변수에는 Int 형의 값을 할당할 수도 있고 값이 없을 수도 있다. (nil) 만약 a에 값을 할당하면 그 값은 옵셔널로 감싸지게 된다. a = 10 print(a) // O..

swift & iOS/swift 2022.01.08