본문 바로가기

전체 글331

세로모드 고정 How to Set - 세로모드 고정 Step1. Project - General - Device Orientation - Potrait 체크 만약 여기서 해결이 안되는 경우, Step2 진행 Step2. // AppDelegate.swift func application(_ application: UIApplication, supportedInterfaceOrientationsFor window: UIWindow?) -> UIInterfaceOrientationMask { // 세로방향 고정 return UIInterfaceOrientationMask.portrait } 2022. 11. 28.
클로저 톺아보기 Closure 톺아보기 클로저는 Named Closure와 Unnamed Closure로 나뉜다. 우리가 흔하게 사용하는 함수는 Named Closure다. 둘다 클로저에 포함되지만 우리가 통상적으로 부르는 클로저는 Unnamed Closure를 말한다. // 1. Named Closure func doSomthing() { print("do something!!!") } // 2. UnnamedClosure let doSomething = { print("do something!!!") } 결국 클로저와 함수는 그게 그것이기 때문에 1급객체의 성질을 가지고 있다. 즉 클로저도 아래의 성질을 갖고있다. 변수나 상수에 대입할 수 있다. 함수의 인자값으로 클로저를 전달할 수 있다. 함수의 반환값으로 클로저를.. 2022. 11. 27.
1급 객체 1급 객체 Swift는 객체지향, 함수형, 프로토콜 프로그래밍을 사용한다. 1급객체의 3가지 특징 변수나 상수에 대입할 수 있다. 함수의 반환값으로 자신을 사용할 수 있다. 함수의 인자값으로 자신을 사용할 수 있다. 이걸 함수에 대입하면 아래와 같다 1급객체함수의 3가지 특징 변수나 상수에 대입할 수 있다. 함수의 반환값으로 함수를 사용할 수 있다. 함수의 인자값으로 함수를 사용할 수 있다. 1. 변수나 상수에 대입할 수 있다. func checkContainStore(storeName: String) -> Bool { let storeArray = ["CU", "GS25", "ministop", "sevenEleven"] return storeArray.contains(storeName) ? true .. 2022. 11. 27.
프로퍼티 옵저버(willSet / didSet) - 프로퍼티(2.5) [참고: 애플문서] [참고: Zedd’s Blog] 프로퍼티 시리즈 저장프로퍼티(feat.클래스와 구조체) - 프로퍼티(1) 연산프로퍼티(Getter/Setter) - 프로퍼티(2) 🍊 프로퍼티 옵저버(willSet / didSet) - 프로퍼티(2.5) 타입프로퍼티(static) - 프로퍼티(3) 프로퍼티 옵저버(Property Observers) 이전글에서 소개한 저장프로퍼티와 연산프로퍼티를 감시할 수 있다. Apple 프로퍼티 옵저버는 자신이 정의한 "저장 프로퍼티"에 추가 할 수 있으며, super class(부모클래스)를 상속한 프로퍼티에도 추가 할 수 있습니다. 프로퍼티 옵저버는 새로운 값이 프로퍼티의 현재값과 "동일하더라도" 속성의 값이 설정(set)될 때 마다 호출됩니다. lazy 저장 프.. 2022. 11. 25.
Date로 두 개의 시간차 구하기 Date로 두 개의 시간차 구하기 테스트를 하다보면 특정부분까지의 시간이 얼마나 걸리는지 알고 싶을 때가 있다. 이때 간단하게 Date함수를 이용해 시작시간과 현재시간을 가지고 시간을 구할 수 있다. 시간차는 Timer를 이용할 수도 있고 아래와 같이 Date를 이용할 수도 있다. 하지만 Date가 간단하게 구현이 가능하니 오늘은 이 방법을 알아보자 타이머 구현 class MainViewController: UIViewController { var startTime: Date? // 시작시간을 저장하는 함수 func startTimer() { let startTime = Date() self.startTime = startTime print("작업시작\(String(describing: self.star.. 2022. 11. 24.
간단한 MVVM구조 예제 간단한 MVVM구조 예제 원문 https://www.kodeco.com/34-design-patterns-by-tutorials-mvvm https://lsh424.tistory.com/68 깃: https://github.com/lsh424/MVVM_iOS MVC정리 https://lsh424.tistory.com/44 ! ├── AppDelegate │ ├── AppDelegate.swift │ └── SceneDelegate.swift │ ├── Controllers │ ├── ViewController.swift │ └── ViewController2.swift │ ├── Models │ └── Dog.swift │ ├── ViewModels │ └── DogViewModel.swift │ └──.. 2022. 11. 23.
연산프로퍼티 - 프로퍼티(2) 연산프로퍼티 - 프로퍼티(2) [참고: 애플문서] [참고: Zedd’s Blog] 프로퍼티 시리즈 저장프로퍼티(feat.클래스와 구조체) - 프로퍼티(1) 🍊 연산프로퍼티(Getter/Setter) - 프로퍼티(2) 프로퍼티 옵저버(willSet / didSet) - 프로퍼티(2.5) 타입프로퍼티(static) - 프로퍼티(3) Property는 저장프로퍼티와 연산프로퍼티, 타입프로퍼티 가 있다. 이제 설명할 내용은 그중 연산프로퍼티다. 저장프로퍼티는 상수와 변수값을 인스턴스의 일부에 저장한다. 클래스와 구조체에서만 사용된다. 반면 연산프로퍼티는 값을 저장하기보다는 특정연산을 수행하여 값을 반환한다. 클래스와 구조체, 열거형에서 사용된다. 클래스, 구조체, 열거형 (Class, Struct, Enum)에.. 2022. 11. 22.
저장프로퍼티 - 프로퍼티(1) [참고: 애플문서] [참고: Zedd’s Blog] 프로퍼티 시리즈 🍊 저장프로퍼티(feat.클래스와 구조체) - 프로퍼티(1) 연산프로퍼티(Getter/Setter) - 프로퍼티(2) 프로퍼티 옵저버(willSet / didSet) - 프로퍼티(2.5) 타입프로퍼티(static) - 프로퍼티(3) Property는 저장프로퍼티와 연산프로퍼티, 타입프로퍼티 가 있다. 클래스나 구조체는 이 저장프로퍼티, 연산프로퍼티로 이루어지는 것이다. 연산프로퍼티는 열거형에서도 사용된다. 이제 설명할 내용은 그중 저장프로퍼티다. Stored Property 저장프로퍼티는 클래스와 구조체에서만 사용된다. 저장프로퍼티를 선언할 때는 저장할 기본값을 줄 수 있고, 이후 수정할 수 있다. 이때 사용되는 것이 변수와 상수이다. .. 2022. 11. 21.
앱과 웹간 소통방법(1) 앱과 웹간 소통방법(1) 웹뷰 디버깅 사파리 - 관리자도구를 누르면 콘솔창이 보인다. 이 콘솔창에 특정 키를 넣어 입력할 수 있다 웹뷰 새로고침 좌측 상단의 새로고침 버튼 콘솔창 입력 → 강력 새로고침 : window.location.reload() 콘솔에서 네이티브로 message를 보내는 테스트도 가능 아래 메시지를 입력하고 엔터를 치면, Xcode에서 메시지 수신 확인이 가능 window.webkit.messageHandlers.HandlerName.postMessage window.webkit.messageHandlers.HandlerName.postMessage('test') 이 방법은 나중에 소개하도록 하겠습니다! 1. 콘솔에서 네이티브로 alert보내기 window.alert("GeekCod.. 2022. 11. 18.
여러가지 접근권한요청 여러가지 접근권한요청 앱을 만들고 테스트를 하다보면 갑작스런 쓰레드에러가 나는 경우가 있다. UIView를 그리는데 있어 에러가는 경우는 Xcode에서 친절하게 보라색으로 표시해주지만 카메라, 사진첩 등 따로 권한을 요청해야만 하는 경우가 있다. 웹뷰를 사용하는 경우, 웹에서 따로 실행시켜준다면 넘어갈 수 있지만 사진을 찍는 경우: 카메라 사용 권한 동영상을 찍는 경우: 마이크 사용 권한 위와 같은 내용 뿐만 아니라 정말 다양한 권한들이 있다. 세팅방법 info.plist에 내용을 추가 하기만하면 정상작동한다. 다양한 접근권한 아래와 같이 다양한 권한이 존재한다. 애플 문서 블루투스 : Privacy - Bluetooth Always Usage Description 캘린더 : Privacy - Calen.. 2022. 11. 17.