Swift/Swift 언어이해 9

옵셔널 바인딩과 if let, guard let이해

옵셔널 바인딩과 if let, guard let의 관계 : 옵셔널 값을 안전하게 사용하기 위한것이 옵셔널 바인딩인데 이때 if let또는 guard let을 사용해서 옵셔널을 바인딩하고 안전하게 값을 가져옵니다. if let 임시상수 = 옵셔널 { 구문 } 이런식으로 임시상수를 사용하여 옵셔널 값이 안전한지 체크합니다(nil여부파악) guard let은 if let과 차이점이 있습니다 guard let 이후 조건문이 false면 else문의 구문을 실행하고 그렇지 않으면 가드문의 else구문을 실행하지않고 코드가 진행됩니다. 그리고 guard let은 전역변수로도 사용이 가능하고 블럭을 종료하는 breack나 return, throw등이 필요합니다. 예외처리에서도 guard let이 적합하고 else문또..

Swift - 타입캐스팅이란?

타입 캐스팅 (Type Casting) - Swift things 배열은 2개의 Int 값, 2개의 Double 값, 하나의 String 값, 하나의 (Double, Double) 타입의 튜플, "Ghostbusters" 영화, 그리고 String 값과 다른 String 값을 반환하는 클로저 표현식을 포함합니다. bbiguduk.gitbook.io 타입캐스팅의 정의는 이렇게 나와있다. 타입 캐스팅 (Type casting) 은 인스턴스의 타입을 확인하거나 해당 인스턴스를 자체 클래스 계층 구조의 다른 곳에서 다른 상위 클래스 또는 하위 클래스로써 취급하는 방법입니다. // 타입 캐스팅 class Pet { var name = "" init(name: String) { self.name = name } }..

Swift - 값, 참조 타입에 대한 개념 (COW)

class 와 struct의 차이점에서 이해했듯 값타입과 참조타입이 있는데( https://teol-it.tistory.com/25 ) struct, enum, tuple 와 기본자료형( Int, Float, Double, Bool, String, Array, Dictionary, Set ) 등은 값타입으로 되어있고 특히 기본자료형은 struct로 만들어져있습니다. 참조타입은 class, function(closure) 등이 있습니다. -- 값 타입은 깊은복사라고 해서 데이터의 새로운 복사본을 생성하는 것이고 -- 참조타입은 원본 데이터를 참조하는 얕은 복사라고 합니다 그래서 얕은복사인 참조타입(class func)은 원본데이터의 값을 변경하는 것이고 구조체와 같은 값타입은 원본데이터의 값을 변경하지 않..

for ~ in과 for each의 차이

- for in과 for each의 차이는 무엇이길래 둘다 쓰는걸까? for in은 사용자가 직접 커스텀할 수 있는 반복문이라고 보면되지만 for each는 반복문이라 생각하기 보다는 클로저를 이용한 파라미터를 넘겨주는 구문이라고 생각하면 쉽다. for each와 for in이 비슷하다고 생각되는 이유는 바로 반복이 들어가기 때문이고 더 깊숙히 차이점을 들여다보면 작동방식, 커스텀유무에서 차이가 있다. - 각각 어떨때 사용되어야 할까? 내가 궁금한것은 for in과 for each는 그럼 각각 어떨때 사용되어야 할까라는 점인데 이건 상황에 따라 다르지만 작동원리를 파악하다보면 각 상황에 맞게 뭘 써야할지 보인다 그래서 이렇게 두 구문의 차이를 아는 것이 적절한 구문을 써서 더 편하게 코딩되는데 도움이 된..

class와 struct의 차이

- 코드 유튜버 "개발하는 정대리"님의 학습코드자료입니다. struct YoutuberStruct { var name : String var subscribersCount : Int } var devJeong = YoutuberStruct(name: "정대리", subscribersCount: 99999) var devJeongClone = devJeong print("======== struct =========") print("값 넣기 전 devJeongClone.name : \(devJeongClone.name)") devJeongClone.name = "호롤롤로" // 값 복사이기 때문에 둘의 값이 다르다 print("값 넣은 후 devJeongClone.name : \(devJeongClone...

Swift 모든 문법 정리

(Ctrl+F키로 찾기) 1 콘솔로그,문자열보간법,명명법 var Name: String = "김정환" let age :Int = 10 class Person{ var Name: String = "김정환" let age :Int = 10 } let yagom:Person = Person() print("저의 나이는\(age+15)입니다.") print("제 이름은 \(Name)입니다.") dump(yagom)//인스턴스까지 자세히 보여줌 2 상수,변수 let 상수:Int = 10 //constant var 변수:Int = 11 //variable 3 기본 데이터 타입(Bool,Int,UInt,Float,Double,Character,String) var someBool: Bool = true//false ..

Swift 기본문법 공부

조건문 if문, 삼항연산자, 선언문, 출력문print import UIKit //var isDarkMode : Bool = false // //if (isDarkMode == true){ // print("다크모드 입니다.") //} //else { // print("다크모드 아닙니다.") //} // //var title : String = isDarkMode == true ? "다크모드 입니다." : "다크모드 아닙니다." // // //print("title: \(title)") var EatLunch : Bool = true if(EatLunch == true) { print("점심을 먹었습니다.") } else{ print("점심을 먹지 않았습니다.") } var Full : String = E..