Apple/Swift 20

[Dart & Swift] 변수

변수 관습적으로 함수나 메서드 내부에서 지역 변수를 선언할 때에는 var 사용 class에서 변수를 선언할 때에는 타입을 지정해 줌 String name = “하루”; dynamic 스위프트의 Any와 같음. 변수명 앞에 타입을 dynamic으로 지정해주거나, var 키워드와 변수명을 선언 후 값을 지정하지 않으면 됨 null safety 스위프트의 옵셔널 개념 어떤 변수(데이터)가 null이 될 수 있음을 명시하는 것 String? haru = 'haru'; haru = null; // ㅇ에러 안남 final variables 한번 정의된 변수를 수정할 수 없게 만들 때 var 대신 final 키워드 사용 late 초기 데이터 없이 변수를 선언할 수 있게 해줌 late final 변수 데이터를 나중에 ..

Apple/Swift 2023.11.29

[Swift] JSON 데이터 Decodable을 사용하여 구문 분석하기

Decodable 프로토콜을 사용하여 JSON을 사용자 정의 객체 형식으로 변환할 수 있습니다. 아래와 같은 json이 있다고 할 때, { name: "haru" id: 23 } 이를 디코딩하려면, JSON 필드와 일치하는 속성을 가진 모델을 생성합니다. struct Blog: Decodable { let id: Int let name: String } 그리고 JSONDecoder를 사용합니다. let bloger = try? JSONDecoder().decode(Blog.self, from: jsonData) 자료 출처: 스위프트 애니타임

Apple/Swift 2023.10.16

inout 파라미터 사용 / 점수 reset 함수

안젤라유 No.9 quiz 앱을 만드는 과정에서 흥미로웠던 과제 두 개를 포스팅 해보려 합니다. 안젤라가 작성한 코드와 제가 짠 코드를 비교해보겠습니다. [과제 완료 사진] 1. 퀴즈를 맞추면 Score 점수가 올라감 2. 퀴즈를 다 풀고 첫 문제로 돌아가면 Score가 0으로 reset 됨 [과제1. 퀴즈 score 올리기] #안젤라 코드 // score 전역 변수 선언 var score = 0 // 기존 함수에 기능 추가 mutating func checkAnswer(userAnswer: String) -> Bool { if userAnswer == quiz[questionNumber].answer { score += 1 // 기존 함수에 score 점수 +1 기능 추가 return true } el..

Apple/Swift 2023.04.04

클래스 전용 프로토콜을 정의할 때 AnyObejct 타입 상속

AnyObejct: 클래스에만 상속할 수 있는 프로토콜 = 클래스 전용 프로토콜 타입을 protocol SomeProtocol: AnyObject { func test() { print("프로토콜") } } class AnotherViewController: UIViewController var delegate?: SomeProtocol 참고 (예전에는 class 키워드 사용하였음.) 프로토콜의 상속 리스트에 class 키워드를 추가해서 프로토콜이 클래스 타입에만 채택될 수 있도록 제한할 수 있음 단, 프로토콜의 상속 리스트의 맨 처음에 class 키워드가 위치해야 함 protocol ClassOnly: class, String, Double { } class Only: ClassOnly { } stru..

Apple/Swift 2023.03.04

커스텀 델리게이트 적용 시 강한 참조 사이클 예방하기

🤡 예시 델리게이트를 적용할 컨트롤러에 delegate 변수를 선언하고 class AnotherViewController: UIViewController var delegate?: SomeProtocol 대리자를 설정할 컨트롤러에 대리자를 등록해주면 class ViewController:UIViewController let theVC = SomeClass() theVC.delegate = self protocol SomeProtocol { func test() { print("프로토콜") } } var delegate?: SomeProtocol 과 theVC.delegate = self 가 서로를 가리키기 때문에 강한 참조 사이클이 일어날 수 있습니다. 😈 해결 방법 해결 방법 1. delegate 객체..

Apple/Swift 2023.02.14

속성 감시자, open/final 키워드

Swift property-observers Swift의 속성 관찰자 속성 관찰자를 변수에 연결하여 변수 값이 변경될 때 작업을 수행할 수 있습니다. 이러한 속성 관찰자를 willSet 및 didSet이라고 합니다. 전자는 속성이 변경되기 직전에 실행되고 후자는 변경된 직후에 실행됩니다. Swift에서 didSet 및 willSet 메소드는 속성 관찰자 역할을 합니다. * willSet: 속성이 변경되기 직전에 코드가 실행이 됩니다. * didSet: 속성이 변경된 직후 코드가 실행이 됩니다. open / final Swift에서 open와 final의 차이점 Swift에서 open 키워드는 클래스, 구조체 또는 프로토콜이 동일한 모듈 또는 다른 모듈 내에서 다른 클래스, 구조체 또는 프로토콜에 의해 서..

Apple/Swift 2023.01.27

[Swift] attributes 선언속성 @available, @discardableResult

💻 선언속성? Swift에는 선언에 적용되는 속성과 유형에 적용되는 두 가지 속성이 있습니다. 속성은 선언 또는 type에 대한 추가 정보를 제공합니다. @속성의 이름과 속성이 허용하는 모든 인수가 뒤에 오는 기호를 작성하여 속성을 지정합니다. 선언속성 중에 어떤 것이 있는지 살펴보겠습니다. @ available 👉 스위프트 버전과 플랫폼의 운영체제 버전과 관련된 주기 표현 @available속성을 적용하여 특정 Swift 언어 버전 또는 특정 플랫폼 및 운영 체제 버전과 관련된 선언의 수명 주기를 나타냅니다. available은 항상 둘 이상의 쉼표로 구분된 속성 인수 목록과 함께 나타납니다. 이러한 인수는 👇다음 플랫폼 또는 언어 이름 중 하나로 시작합니다. iOS iOSApplicationExten..

Apple/Swift 2022.12.13

[Swift] 인-아웃 파라미터

💻 In-out parameter 함수 매개변수는 기본적으로 상수입니다. 해당 함수 본문 내에서 함수 매개 변수의 값을 변경하려고 하면 컴파일 타임 오류가 발생합니다. 이는 실수로 매개변수 값을 변경할 수 없음을 의미합니다. 함수가 매개변수 값을 수정하도록 하고 함수 호출이 끝난 후에도 변경 사항을 유지하려면 해당 매개변수를 in -out 매개변수 로 대신 정의해야합니다. inout매개변수 유형 바로 앞에 키워드를 배치하여 인-아웃 매개변수를 작성합니다 . 인-아웃 매개변수 에는 함수에 전달 되고 함수에 의해 수정된 값이 있으며 함수에서 다시 전달되어 원래 값을 대체합니다. in-out 매개변수에 대한 인수로만 변수를 전달할 수 있습니다. 상수와 리터럴은 수정할 수 없기 때문에 상수나 리터럴 값을 인수로..

Apple/Swift 2022.12.13

[iOS/Swift] 오류 처리 error

💻 오류처리 방식 error를 enum 타입으로 만들 수 있다. 에러를 체크하거나 던지는 메서드를 만들 수 있다 일반적으로 반환하지 않는 메서드는 끝에 thorw를 써준다 에러를 던지게 되면 do catch라는 블록에서 작업을 한다. 에러가 들어온다고 하더라도 에러에 대한 처리를 하지 않겠다면 try? 써준다. (이거 너무 어려워요ㅠ..) 에러를 던지는 메서드에서 반환형을 가지고 있다면 데이터 반환형 앞에 thorw를 써준다. //오류 정의 enum MismatchError: Error { case countMismatch case colorMismatch case soundMismatch } //오류 던지기(throws) 함수 생성 func guessSound(name userInput: String)..

Apple/Swift 2022.11.30