STUDY/Swift & iOS 13

[Swift]Section 8 - Intermediate Swift Programming - Control Flow and Optionals

목표: Egg Timer 만들기 계란을 눌렀을때 타이머 돌아가게끔 만들면됨. 배운것 1. Optional nil일수도 아닐수도 있습니다. 하지만 실제로 값을 사용하려면 unwrap을 해줘야함 https://developer.apple.com/documentation/swift/optional/ Apple Developer Documentation developer.apple.com 2. Timer 지정된 interval 마다 selector에 연결된 콜백함수 실행 https://developer.apple.com/documentation/foundation/timer Apple Developer Documentation developer.apple.com 3. ProgressView 진행 상황을 볼 수 ..

STUDY/Swift & iOS 2023.01.31

[Swift] Section 7 - Using and Understanding Apple Documentation

목표: 실로폰 어플리케이션을 만들면서 애플 공식 문서 사용해보기 구현하다 막히는 경우 이런 방식으로 접근하라고 한다. 구글링 - 스택오버플로우 검색 - 기능 구현(사실상 복붙) - 공식 문서 확인 - 커스터마이징 실로폰 버튼을 눌렀을때 소리가 나게 만들어야하는데 막힌경우 이렇게 할수 있다. Google 검색 "play sound swift stackoverflow" https://stackoverflow.com/questions/32036146/how-to-play-a-sound-using-swift 위 링크에서 확인한 코드로 구현 공식문서를 통해 클래스나 함수, 메서드 등 확인 https://developer.apple.com/documentation/avfoundation/ xcode에서 확인하고싶은..

STUDY/Swift & iOS 2023.01.26

[Swift] Section 6 - Auto Layout and Responsive UIs

목표: 반응형 레이아웃 만들기 - 이전까진 특정 크기의 화면만 대응했음. 하지만 옆으로 눕혀서 사용할때나 화면 크기가 다른경우 깨지는 문제가 있음 - 하지만 모든 화면크기에 대해서 하나씩 만드는 건 비효율적임 1. Pin (constraints) 반응형으로 만드는 방법중 하나. constriant를 모든 모서리에 0으로 잡으면 회전할때도 맞게 변형됨. 백그라운드 만들때 괜찮은 방법 하지만 일정 사이즈가 들어가는 경우 옆으로 눕혀서 사용할때 깨질 가능성이 높음 2. Alignment 모든 크기에 맞추기 위한 적절한 방법. 특정 아이템과 일정 이상을 띄우고 싶으면 싶으면 constraint과 조합해서 사용하면 됨 - horizontal alignment로 중앙을 맞춘다음 윗부분을 constraint로 띄우는..

STUDY/Swift & iOS 2023.01.24

[Swift] 38. Responding to User Interactions with IBActions

Udemy 강의 "iOS & Swift - The Complete iOS App Development Bootcamp" 버튼을 눌렀을때 이미지를 변환하는 코드(주사위 이미지 변경) 더보기 import UIKit class ViewController: UIViewController { // asset을 가져오기 위한 배열 let diceArray: [UIImage] = [ UIImage(imageLiteralResourceName:"DiceOne"), UIImage(imageLiteralResourceName:"DiceTwo"), UIImage(imageLiteralResourceName:"DiceThree"), UIImage(imageLiteralResourceName:"DiceFour"), UIImag..

STUDY/Swift & iOS 2023.01.16

Swift 문법 기초 8

예외 Error 프로토콜을 사용해서 표현함 주로 열거형을 사용해서 오류의 종류를 나타냄 enum ErrorName: Error { case case1 case case2 case case3 } 예외 발생 오류 발생의 여지가 있는 메서드는 throws를 사용해서 오류를 내포하는 함수임을 표시함 예시 class VendingMachine { // skip func receiveMoney(_ money: Int) throws { guard money > 0 else { throw VendingMachineError.invalidInput } self.deposited += money } func vend(numberOfItems numberOfItemsToVend: Int) throws -> String { ..

STUDY/Swift & iOS 2022.06.27

Swift 문법 기초 7

타입 확장 프로토콜 구현해야 할 요구사항을 정의하는 문법 프로토 타입을 제시하는 것이므로 기능을 직접적으로 구현하지 않음 protocol Protocol1 { // property var var1: Int { get set } var var2: String { get } //method func func1() // initializer init(var1: Int, var2: String) } 프로퍼티 요구: 항상 var 키워드 사용 get, set을 모두 명시하면 읽기 쓰기 모두 가능한 프로퍼티 get은 읽기만 가능해도 상관 없음 메서드 요구 이니셜라이저 요구 채택과 준수 채택(adopted): 구조체, 클래스, 열거형에서 프로토콜을 사용하는 것 준수( conform): 프로토콜을 구현하는 것 struc..

STUDY/Swift & iOS 2022.06.27

Swift 문법 기초 6

옵셔널 심화 옵셔널체이닝 매번 nil을 확인하지 않고 최종적으로 원하는 값이 있는지 없는지 확인할수 있음 class Person { var name: String var job: String? var home: Apartment? init(name: String) { self.name = name } } class Apartment { var buildingNumber: String var roomNumber: String var `guard`: Person? var owner: Person? init(dong: String, ho: String) { buildingNumber = dong roomNumber = ho } } let dg: Person? = Person(name: "Donggun") le..

STUDY/Swift & iOS 2022.06.25

Swift 문법 기초 5

프로퍼티 구조체, 클래스, 열거형 내부에 구현할수 있음 열거형 내부에는 연산 프로퍼티만 가능 프로퍼티의 종류 struct Student { var name: String = "dg" // 인스턴스 저장 프로퍼티 var koreanAge: Int = 1 var westernAge: Int { // 인스턴스 연산 프로퍼티 get { return koreanAge - 1 } set { koreanAge = westernAge + 1 } } } 인스턴스 저장 프로퍼티: 인스턴스 내부에 저장된 변수 인스턴스 연산 프로퍼티: 인스턴스 내부에 있는 변수이고 연산을 통해 다른 값을 가져오고 세팅할수 있는 변수 get 만 있는 경우 읽기전용 프로퍼티로 사용 struct Student { static var descrip..

STUDY/Swift & iOS 2022.06.21

Swift 문법 기초 4

사용자 정의 타입 구조체 value 타입 struct Sample { // instance property var mutableProperty: Int = 100; let immutableProperty: Int = 200; // type property static var typeProperty: Int = 100; // 인스턴스 메서드 func instanceMethod() { print("instance method") } // 타입 메서드 static func typeMethod() { print("type method") } } 가변 인스턴스로 선언하면 가변 프로퍼티는 변경 가능, 불변 프로퍼티는 변경 불가능 불변 인스턴스로 선언하면 가변 프로퍼티도 변경 불가능 인스턴스 메서드: 인스턴스를 선언..

STUDY/Swift & iOS 2022.06.20