iyOmSd/Title: Swift 106

[Swift] Realm DB

iOS는 많은 데이터베이스들이 있어요 Realm SQLite FMDB CoreData 이 중에서 어떤 것을 골라서 써야 하나 생각하게 되죠 이 게시글은 Realm에 대해 초점을 더 두고 다른 것들은 간략하게 언급해볼게요!! SQLite는 기본내장 프레임워크라 따로 설치가 필요가 없어요 그렇기 때문에 DB의 많은 부분을 접근하고 조작할 수 있어요 여러 프로세스와 스레드로부터 안전해요 FMDB는 SQLite는 Objective-C로 구성되어있는데 이를 wrapping 해서 Swift에 맞게 사용할 수 있어요 CoreData는 데이터베이스가 아니에요! SQLite를 저장소로 쓰지만 프레임워크 자체는 데이터베이스가 아니에요 객체 그래프를 관리하기 위한 프레임워크라고 할 수 있겠네요 따라서 객체에 중점을 두고있어..

iyOmSd/Title: Swift 2020.09.17

[Swift] MarkUp Overview Documentation 작성하기 (설명문서작성)

이 기능의 명칭이 MarkUp Overview라고 하는 것 같은데 함수나 타입에 마우스를 가져다대고 opt(옵션) + (클릭) 을하면 아래처럼 설명창이 뜨는것을 본적이 있죠?! 이번에는 간단하게 이 문서를 작성하는 방법을 해볼거에요 그전에!!! MarkUp??? MarkDown??? 둘의 차이가 뭔지 궁금해졌어요 MarkUp 마크(Mark)"로 둘러싸인 언어 혹은 "태크(Tag)"로 둘러싸인 언어 문서나 데이터의 구조를 명기하는 언어 라고해요 대표적으로 데이터 표현언어인 HTML과 데이터 교환언어인 XML이 있죠 MarkDown 작성한 텍스트를 MarkUp으로 HTML로 변환해주는 언어라고해요 읽고쓰기 쉽게 만들어져있어요 마크를 인식하고 HTML로 변환해줘요 예를들어 SNS에서 #안녕 이라고 친다면 자동..

iyOmSd/Title: Swift 2020.09.09

[Swift] Setting Bundle 앱 테스트환경

설정에 관련된 화면을 만들어서 테스트할 때 유용하게 사용할 수 있는 환경을 만들어볼거에요 UserDefault를 변경하여 테스트해보고 싶은경우 유용하기도해요 파일을 하나 만들어볼게요 Settings Bundle파일을 만들어주고 plist가 하나 생길거에요 이상태에서 바로 앱을 빌드하고 저 정보는 설정창에 있어요!! 설정창으로 들어가볼게요!! 들어가서 자신이 만든 앱의 설정을 들어가면 아래와 같이보여요 타입은 여러가지가 있어요 자세한건 아래 개발자문서를 참고하구요 developer.apple.com/library/archive/documentation/Cocoa/Conceptual/UserDefaults/Preferences/Preferences.html#//apple_ref/doc/uid/10000059..

iyOmSd/Title: Swift 2020.08.26

[Swift] App Life Cycle

앱의 생명주기에 대해서 알아볼거에요 우선 iOS13을 기준으로 최신버전에는 SceneDelegate라는 파일이 생성되는게 보일거에요 새로운 개념이죠 다음에 알아보도록하구요! 지금은 AppDelegate 위주의 단순한 App의 생명주기에 대해서 알아보려고해요 아래그림은 왼쪽은 AppDelegate 오른쪽은 SceneDelegate가 있는상태일때 생명주기에요 예전그림이 변경어서 살짝 헷갈리지만 기본적인 개념은 같아요 예전그림은 이런 모습을 하고 있엇구요... 아무튼! 당연히 변경된 최신거를 참고해야겟죠??! 각 상태를 정리해볼게요 Active - 이벤트를받고, 일반적으로 앱이 실행되는 상태에요 Inactive - 앱의 상태변화시에 거치게되구요, 이벤트는 받지않는 상태에요 (Background로 전환시 거치는..

iyOmSd/Title: Swift 2020.08.20

[Swift] Image Cache처리 (NSCache, FileManager)

서버에서 이미지를 불러올때 이미지 URL을 받고 다시 해당 URL로 통신을 하는 식으로 이미지를 받아온다면 비효율적이겠죠?? 또한 이미지크기도 크다고하면 더욱 좋지 않을거같아요..! 그래서!! 효율적인 캐시처리에 대해서 알아볼거에요 캐시란 기기 안의 임시 저장소를 뜻하는거에요 임시 저장소를 통해서 이미지를 넣어두고 빠르게 보여줄 수 있고 효율적인 통신을 할 수 있어요 캐시에는 두 가지 종류가 있어요 memory cache - 기기를 끄면 사라져요 이 캐시기능을 스위프트에서 지원을 해주죠 NSCache 를 사용해서 구현 할 수 있어요 disk cache - 기기안에 저장 되어있고 껐다 켜도 남아 있어요 이 부분은 경로에 따라서 앱을 삭제할때 사라지게할수도, 앱을 삭제해도 남아있게할수도 있을거같아요 User..

iyOmSd/Title: Swift 2020.08.09

[Swift] Xcode release, debug app 구분하기

요즘 정신이 없어서 글을 못 올렸네요... 반성... 이번에는 디버그용앱과 릴리즈용 앱을 구분해서 폰에 같은 앱이지만 두 개의 앱(?)이 나타날 수 있도록 하는 작업을 해볼 거예요 이걸 왜 해요 굳이 불편하게...?? 음... 제가 생각하기에는 우선 xcode 디폴트로 debug용 앱이 설치가 돼요 근데 뭐 마켓에서 다운로드하거나, 테스트플라이트로 다운받거나하면 release용 앱이 다운받아지거나 뭐 그런... 다운하면서 겹쳐져서 기존 개발하던 앱이 사라지고 받아지는 경우가 있어서... 개발용으로만 따로 빼고 싶어서 하는 거 같아요 Xcode위에를 보면 Edit Scheme를 누르면 미리 만들고 게시글을 써서.. 여기에 있는 WiTH_Dev는 이 글을 보면서 곧 만드실 거예요...! 이렇게 빌드 설정이 ..

iyOmSd/Title: Swift 2020.07.27

[Swift] CAEmitterLayer, CAEmitterCell - 파티클 효과

이번 게시글에서 구현할 기능은 파티클 효과입니다! 어떤 효과냐구요..? 우선 영상으로 예시부터 볼게요 카톡에서 겨울에 눈올때 나타나는 효과같은거에요 오늘은 이 타입을 사용해서 구현할건데요 파티클 시스템을 render해주고 애니메이션도 넣어서 방출해준데요! 이거와 같이 사용하는게 이 타입이에요 CAEmitterLayer로 방출될 파티클을 지칭하는 것같죠? 따라서 CAEmitterLayer라는 컨테이너에서 CAEmitterCell이라는 파티클을 뿌려주는 느낌이에요 엄청 다양한 프로퍼티들이 많이있어서 하나하나 모두 보진않고 사용한것 위주로 봐볼게요 CAEmitterLayer 정의 func createParticles() { let particleEmitter = CAEmitterLayer() particleE..

iyOmSd/Title: Swift 2020.06.20

[Swift] Coordinator Pattern (2/2) - 기본동작

2020/05/17 - [iyOmSd/Title: Swift] - [Swift] Coordinator Pattern (1/2) - 기본원리 [Swift] Coordinator Pattern (1/2) - 기본원리 iOS 아키텍쳐의 종류는 다양해요 MVC, MVP, MVVM, VIPER, RIBs... 등등 많은데 MVC-C, MVVM-C 이러한 표현을 보신적도 있지않나요?? 여기서 C는 Coordinator를 의미해요 Coordinator란?? 화면의 흐름을 제어해주는.. nsios.tistory.com 전게시글에서 Coordinator가 어떤 원리로 돌아가는지 느낌을 살펴봤구요 이제 써먹을 수 있도록(?) 구현해볼게요 제가 생각한 Coordinator는 Navigation을 각 하나씩 가지고있어요 따라..

iyOmSd/Title: Swift 2020.05.22

[Swift] - Alamofire 5.1 변경된 통신 및 Json Dynamic Key

2019/10/27 - [iyOmSd/Title: Swift] - [Swift] Alamofire를 사용하여 API JSON 데이터 받기 (1/2) 예전에 Alamofire을 사용해서 통신했었는데요!! Swift버전도 올라가고, 더좋은 방향으로 발전해나가기 때문에 변경사항이 좀 있어요!! 사용법은 거의 비슷한데 살짝 바꼈더라구요 글작성시 사용한 Alamofire 버전은 5.1 이구요! struct LoginServiceImp: LoginServiceProtocol { func requestSignUp(form: SignUpForm) { var urlComponent = URLComponents(string: BaseURL.shared.getBaseString()) urlComponent?.path = R..

iyOmSd/Title: Swift 2020.05.18

[Swift] Coordinator Pattern (1/2) - 기본원리

iOS 아키텍쳐의 종류는 다양해요 MVC, MVP, MVVM, VIPER, RIBs... 등등 많은데 MVC-C, MVVM-C 이러한 표현을 보신적도 있지않나요?? 여기서 C는 Coordinator를 의미해요 Coordinator란?? 화면의 흐름을 제어해주는 역할 라우팅 VC관리 이런 단어들이 어울리겟네요 말이 좀 어렵지만.. 위 그림처럼 이런 원리라고 생각하면 쉽게 접근할 수 있어요 VC에 ViewModel를 의존성주입(DI)하듯 VC를 생성하고 필요한 의존성주입을 할 수 있어요 기존에는 Storyboard에서 VC를 관리하고 이동시켰어요 라우팅관리를 모두 Storyboard에서 했었죠 혹은 ViewController가 담당했죠 Coordinator를 사용하면 Coordinator가 VC의 이벤트도 ..

iyOmSd/Title: Swift 2020.05.17