Swift
-
에러 처리Swift 2023. 6. 5. 20:33
에러 처리 문법 에러를 발생시킬 수 있는 함수 enum someError: Error { case aError case bError } func errorFunction() throws -> Bool { if true{ throw someError.aError } return false } do{ //에러를 발생시킬 수 있는 구문을 넣어준다. try errorFunction() } catch { //에러가 발생하면 실행될 블록을 작성해줌. print("에러 발생") } 1. 에러의 종류 설정 에러 프로토콜을 채택한 열거형을 만들어서 에러 타입을 정의 enum someError:Error { case aError case bError } 2. 에러를 발생시킬 수 있는 함수 에러를 발생시킬 수 있는 함수는 ..
-
열거형 - 연관값, 열거형Swift/swift 문법 2023. 6. 5. 16:15
타입 -> basic type과 custom type으로 나뉨. custom type -> 개발자가 마음대로 만들어서 쓸 수 있는 타입 (열거형, 클래스, 구조체) 열거형: 타입 자체를 한정된 사례 안에서 정의할 수 있는 타입 - 코드의 가독성과 안정성이 높아짐 -> 명확한 분기 처리 가능 연관값 (Associated Values) -> 열거형의 각 case에 custom type의 구체적인 추가적인 정보를 저장함 : 키테고리를 만들고 해당하는 값을 저장한다. enum Barcode { case upc(Int, Int, Int, Int) case qrCode(String) } var productBarcode = Barcode.upc(8, 85909, 51226, 3) switch productBarco..
-
firebase - FirebaseDatabase를 연결해봅시다Swift 2023. 5. 28. 20:50
1. 패키지 불러오기 2. import FirebaseDatabase 3. var firebaseDB: DatabaseReference! 인스턴스 생성 import FirebaseDatabase class AddressSearchViewController: UIViewController,UIImagePickerControllerDelegate, UINavigationControllerDelegate { var firebaseDB: DatabaseReference! @IBAction func submitButtonTapped(_ sender: Any) { firebaseDB = Database.database().reference() firebaseDB.child("주소값").setValue("서울시 사당..
-
as 연산자 / is 연산자Swift/swift 문법 2023. 5. 26. 19:36
상속은 필요한 데이터를 추가하는 메모리 구조 undergraduate 타입은 person을 상속받는다. 메모리 구조 -> person에서 undergraduate의 프로퍼티가 추가된다. is 연산자 : 특정 타입이 맞는지 확인한다. 반환값: Bool type as 연산자 : 인스턴스 타입의 힌트를 변경하는 연산자. 다운캐스팅에 성공할 경우, 접근가능한 항목(상속받은 클래스의 프로퍼티)의 수를 늘려준다. let person: Person = Undergraduate() -> Person: 변수에 정의된 타입 Undergraduate: 실제 메모리 공간의 인스턴스 Person type보다 Undergraduate type 항목의 개수가 더 많다. 하지만 현재 Person type으로 person변수에는 정의..
-
비동기 프로그래밍Swift 2023. 5. 14. 08:55
1) 비동기 처리는 왜 필요할까? : 메모리 순차적으로 실행될 필요가 없는 작업 쓰레드 : CPU의 손, 주방 화구에 불을 올림 (작업을 실행함) 여러 스레드에서 처리 하는 것: 동시적 처리 (concurrency) 2) 비동기와 동시의 개념 동기(Sync) 비동기(Async) 기준 일이 끝나는 것을 기다리는가 / 기다리지 않는가? 작업의 종료에는 관심이 없다. 실행중인 작업의 종료 기다린다 기다리지 않는다 코드 DispatchQueue.global.sync{ } DispatchQueue.global.async{ } 직렬 동시(비동기 처리) 기준 여러 스레드를 쓰는가? / Queue의 작업 처리 방식 스레드 사용 개수 1개의 스레드 사용 여러개의 스레드 사용 일의 성격 일을 순차적으로 실행 여러개의 메모..
-
Protocol의 메모리 주소와 프로토콜의 확장 구현시 실행 메서드Swift/swift 문법 2023. 5. 13. 20:58
:Protocol은 자격증 -> 어떤 구조체나 클래스도 채택 가능하다. 테이블과 메서드 주소가 정해져있지 않고, 채택해서 구현할 때 테이블이 만들어진다. 클래스에서 직접 구현한 메서드는 확장에서 구현한 메서드보다 우선순위가 생긴다. protocol Remote{ func turnOn() func turnOff() } extension Remote { func turnOn() {print("리모컨 켜기")} func turnOff() {print("리모컨 끄기")} func doAnother() { print("리모컨 다른 동작") } } struct LgTv:Remote { func turnOn() {print("TV 켜기")} func turnOff() {print("TV 끄기")} func doAno..