iOS 52

SwiftUI alert in iOS14

SwiftUI 개발 중 최소타겟 iOS14버전으로 하는 중 alert이 필요한 상황이 있었다. 아래와 같이 .alert 코드 작성 시 아래에 있는 .alert만 호출이 된다. .alert(isPresented: $presentAlert) { Alert( title: Text("Title"), message: Text("Message") ) } .alert(isPresented: $presentAlert2) { Alert( title: Text("Title2"), message: Text("Message2") ) } 그래서 검색해보니 스택오버플로우에서 활용방안에 대해서 나와있었다. https://stackoverflow.com/questions/58069516/how-can-i-have-two-alerts..

iOS/SwiftUI 2023.01.17

@StateObject vs @ObservedObject 차이점

@StateObject 및 @ObservedObject 프로퍼티 래퍼는 SwiftUI 보기에 관촬된 개체의 변경 사항에 대한 응답으로 업데이트하도록 지시합니다. 두 래퍼는 비슷해 보이지만 SwiftUI에서 앱을 빌드할때 중요한 차이점이 있습니다. What is an @ObservedObject? @StateObject와 @ObservedObject의 차이점을 알아보기 전 @ObservedObject가 무엇인지 이해하는 것이 좋습니다. 두 프로퍼티 래퍼 모두 개체가 ObservableObject 프로토콜을 준수해야 합니다. 이 프로토콜은 객체가 변경되기 전 방출하는 게시자가 있는 객체를 나타내며 SwiftUI가 뷰를 다시 그리기를 그리도록 지시할 수 있습니다. ObservableObject를 준수하는 타입..

iOS/SwiftUI 2023.01.07

iOS) UIViewController

뷰 컨트롤러란?? UIKit 앱의 뷰 계층 구조를 관리하는 객체 -> "뷰 컨트롤러는 앱의 근간을 이루는 객체로 모든 앱은 최소한 하나 이상의 뷰컨트롤러를 가지고 있는다." 뷰 컨트롤러의 주된 역활 일반적으로 기본 데이터의 변경에 대한 응답, 뷰의 내용을 업데이트 합니다. 뷰와의 사용자 상호 작용에 응답 뷰 크기 조정 및 전체 인터페이스 레이아웃 관리 앱에서 다른 뷰 컨트롤러를 포함한 다른 개체와의 조정 -> 윈도우 객체로 부터 전달된 이벤트를 받아, 내부적으로 구현된 비즈니스 로직을 실행하고, 그 결과로 얻어진 데이터를 콘텐츠를 만들어 화면에 표현하는 등, 모바일 애플리케이션에서 뷰 컨트롤러는 우리가 하는 대부분의 작업들의 중심에 있다고 생각할 수 있다. 뷰 컨트롤러의 종류 ViewController ..

iOS/iOS 2022.12.06

Swift) NumberFomatter

Swift) NumberFomatter NumberFormatter란? 애플 공식문서에서는 숫자 값과 해당 텍스트 표현 간에 변환하는 포맷터라고 소개하고 있습니다. 조금 더 살펴보는게 좋을 것 같네요. OverView에서 이제 NumberFormatter의 인스턴스는 NSNumber 객체를 포함하는 셀의 텍스트 표현을 포맷하고 숫자 값의 텍스트 표현을 NSNumber 객체로 변환합니다. -> 여기서 NSNumber란 기본 스칼라 숫자 값에 대한 객체 래퍼라고 되어 있는데 추후에 자세히 알아봐야 겠네요. 계속해서 NSNumber는 표현에는 정수, 실수 및 복식이 포함되고, float 및 double은 지정된 소수점 위치로 형식화할 수 있습니다. NumberFormatter 객체는 셀이 허용할 수 있는 숫자..

iOS/Swift 2022.12.02

iOS) 프레임워크와 라이브러리에 대해서

프레임워크 프레임워크란?? 컴퓨터 프로그래밍에서 소프트웨어 프레임워크는 복잡한 문제를 해결하거나 서술하는데 사용되는 기본 개념 구조 입니다. - by 위키 정리하자면 개발자에게 구조와 형태를 제공하는 뼈대라고 생각할 수 있습니다. 프레임워크가 제공하는 프레임워크 위에 코드를 작성해서 개발할 수 있습니다. 또한 앱의 구동과 메모리 관리도 프레임워크가 해줍니다. 프레임워크를 사용하는 이유 기반 코드를 프레임워크가 제공하기 떄문에 개발자가 손쉽게 개발 진행할 수 있습니다. 프레임워크는 공통적인 틀(기준)을 제공해서 여러 프로젝트를 진행해도 동일한 프레임워크를 사용하면 코드의 기본 틀은 동일 하기 때문에 가독성과 유지보수 관리가 좋아져서 생산성 향상에 도움을 줄 수 있습니다. iOS에서 대표적으로UIKit과 F..

iOS/iOS 2022.10.19

Swift) 옵저버 프로퍼티를 이용한 데이터 바인딩

데이터 바인딩을 위한 필요한 것에 대해 생각해 보자 프로퍼티 옵저버를 등록한 저장 프로퍼티 프로퍼티 옵저버에 등록되어 값이 변경될 떄마다 호출될 클로저 프로퍼티 생성 특정 행동에 대한 실행 메소드 선언을 위한 @escaping 클로저 함수 예시 코드 데이터 바인딩 실행 순서에 대해 생각해보자 옵저버 프로퍼티에 선언된 클로저 변수 실행 myData 프로퍼티 값 변경 될 때마다 클로저 변수 실행 Why? 옵저버 프로퍼티에 클로저 변수가 선언되어 있어서 이스케이핑 클로저 함수에서 특정 행동을 등록하면 프로퍼티에 변화가 있을 시 실행 예제 코드에서 print()문을 수행할 것을 등록 @escaping 클로저(callback) 실행 Why? myDataListener가 클로저(callback)를 알고 있어 매개변..

iOS/Swift 2022.10.18

Swift) Delegate, Notification 둘 중 어느 것을 사용해야 할까

앱에서 화면 간 데이터 전달을 위해 여러 방식이 있는데 대표적으로 Delegate와 Notification이 있는데 둘 중에 어떠한 상황에서 어떤 것을 쓰는게 좋을까 생각해 보았다. 일단 각 패턴에 대해 알아보자 Delegate Delegate 패턴은 다른 객체의 인스턴스를 내부적으로 가지고 있어 그 인스턴스를 활용하는 방식으로 사용 Notification 값의 변화에 따라 이벤트가 발생해야할 때 이것을 observe 하고 있는 방식으로 사용 구현 방법 및 사용방법 Delegate Delegate를 위한 프로토콜이 필요하다. 이벤트 처리 담당 객체가 알고 있어야함 Notification 값의 변화가 필요한 값에 observe하고 그에 맞는 이벤트만 발생시켜주면 됨 각 패턴의 장단점 Delegate 장점 ..

iOS/Swift 2022.10.12

Swift) Realm 연동하기

Realm 연동하기 1. 터미널 프로젝트 경로로 이동 cd "프로젝트 경로"2. CocoaPod 설치하기 sudo gem install cocoapods3. Podfile 생성 pod init4. Podfile 수정 (RealmSwift 추가) - nano 에디터 사용 sudo nano Podfile4-1. Podfile에 pod 'RealmSwift' 내용 입력 # Uncomment the next line to define a global platform for your project # platform :ios, '9.0' target 'ProjectManager' do # Comment the next line if you don't want to..

iOS/Swift 2022.10.12