본문 바로가기

분류 전체보기196

[RealmSwift] primaryKey와 AutoIncrease PrimaryKey class Customer: Object { @objc dynamic var idx = 0 } primaryKey로 사용할 프로퍼티를 정의해줌 override class func primaryKey() -> String? { return "idx" } primaryKey를 오버라이드하여 쉽게 primaryKey 를 지정할 수 있음 리턴값이 String이므로 프로퍼티 명을 스트링으로 리턴해줌 AutoIncrease primaryKey로 지정했다고 자동으로 값을 증가시키면서 고유값을 가지게 하는 기능은 없음 realm은 사용자 지정 함수와 프로퍼티 사용이 가능하기 때문에 새로운 데이터가 생길때마다 값을 증가시키는 함수를 작성해 줄 수 있음 참고 사이트 : https://stackoverf.. 2022. 10. 2.
[RealmSwift] 데이터 모델에 enum으로 타입 지정하기 필드 값의 지정된 타입이 있거나 등급이 있는 경우 등에 enum의 장점을 이용할 수 있음 enum을 사용하게 되면 정해진 입력값 내에서 입력하게 되므로 예상치 못한 오류가 생기지 않음 값을 입력할 때 String이나 Int를 사용하지 않고 정해진 타입을 입력하므로 좀더 직관적임 enum CustomerType: Int { /// 활동 계정, default case active /// 휴면 계정 case dormant /// 정지 계정 case suspension } CustomerType enum을 정의해 줌 (enum에서 각 case의 값을 지정해 주지 않는다면 정의해준 순서대로 0, 1, 2.. 가 됩니다. 만약 가장 처음 정의된 case에 71을 지정해 주었다면 71, 72, 73... 순으로 값을.. 2022. 10. 2.
[iOS/Swift] WKWebView에서 Scheme과 Query로 web과 communication하기 func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) navigationAction과 decisionHandler를 가진 이 함수를 구현 return decisionHandler(.allow) // or return decisionHandler(.cancel) 특별한 일이 없다면 decisionHandler로 allow를 전달. URL에 의한 화면 이동, 로드를 막으려면 cancel로 전달 URL Scheme 얻어오기 if let url = navigationAction.request.ur.. 2022. 9. 26.
[iOS/Swift] WKWebView URL 로드 하기, Request 설정하기 private let wkWebView = WKWebView() 전역 변수 생성 var rootURL: URL? { didSet { setupRequest() } } 이니셜라이저로 설정해도 되고 rootURL 프로퍼티를 추가해서 didSet으로 옵저빙 rootURL이 설정되면 setupRequest()를 호출함 private func setupRequest() { guard let rootURL = rootURL else { return } print("\(rootURL) \(#file.split(separator: "/").last!)-\(#function)[\(#line)]") let request = URLRequest(url: rootURL) wkWebView.load(request) wkWebV.. 2022. 9. 26.
[Framer] Figma 프로젝트 Framer로 이동시키기(Importing) Framer는 프로토타입에 최적화된 툴입니다. 기존에 스케치나 피그마를 사용하여 프로젝트를 진행하고 있었다면 이를 Framer에 가지고 와서 작업을 진행 할 수 있습니다 🥳 Figma에서 Framer로 이동 시키기 위한 플러그인을 제공하고 있습니다. 피그마의 대쉬 보드에서 작업 파일로 이동합니다 프래머로 임포트할 레이어를 드래그 혹은 선택해 줍니다. 그 후 상단의 도형 여러개가 그려져 있는 아이콘을 누른 뒤 Plugins에서 "Figma to HTML with Framer"를 검색해 줍니다. 위 이미지에서 두번째에 있는 플러그인이 사용할 플러그인입니다. 플러그인에 마우스를 올렸을 때 나타나는 "Run"버튼을 누르면 피그마의 레이어를 클립보드에 복사하게 됩니다. 위 창이 나타난다면 "Copy to clip.. 2022. 9. 25.
[iOS/RxSwift] RxSwift와 RxRealm으로 UICollectionView사용하기 Realm은 Object를 상속 받는 클래스를 타입으로 데이터 베이스에 저장된 객체들을 읽어 올 수 있습니다. private lazy var results = try! Realm().objects(Category.self) keyPath에 전달된 필드값으로 내림차순, 오름차순 정렬을 해서 전달 받을 수 있습니다. id 를 기준으로 오름차순 해주면 아래처럼 작성해 주면 됩니다. var updates = try! Realm().objects(Category.self).sorted(byKeyPath: "id", ascending: true) 이렇게 적어 주어도 되고 전역 변수로 realm 객체를 따로 빼주어도 됩니다 let realm = try! Realm() var updates = realm.objects.. 2022. 9. 19.
[iOS/Swift/Library] IQKeyboardManager FirstResponder된 UITextField와 UITextView가 화면에 보이도록 화면 위치를 자동으로 이동 시켜주는 라이브러리 AutoTool을 사용하면 키보드의 툴바로 다음 혹은 이전 UITextField나 UITextView로 이동할 수 있는 기능을 제공 함 IQkeyboardManager.shared.enable = true 를 AppDelegate나 SceneDelegate에 추가해 줌 class AppDelegate: UIResponder, UIApplicationDelegate { func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchO.. 2022. 9. 16.
[iOS/XCode] 시뮬레이터에서 한글 자판 사용하기, 키보드 꺼내는 법 우선 시뮬레이터에서 키보드를 꺼내는 단축키는 Command + Shift + k 입니다 시뮬레이터에 한글 입력이 안될때가 있는데 심지어 키보드에 한글 자판도 없어서 불편할 때 설정에서 쉽게 한글 자판을 추가할 수 있습니다~ Simulator 에서 Settings로 들어가 줍니다 General 메뉴로 들어가 주세요! 상단에 Keyboard 메뉴가 보일 꺼에요! 탭해줍니다 Keyboards 로 들어가 줍니다! 첫번째 항목이에요 Add New Keyboard 를 눌러서 키보드를 추가해 줍시다 Korean를 입력해 줍니다 일부분만 입력해도 하단에 뜹니다! Standard 눌러주시고 Done 눌러 주세요 시뮬레이터 키보드에서 지구본 모양 누르시면 영어/한글 토글 됩니다 🥳 2022. 9. 14.
[Swift] MVVMC 자세히 알아보기 - 튜토리얼 4 (child coordinator 삭제하기) 2022.07.10 - [🍎 iOS/Architecture Pattern] - [Swift] MVVMC 자세히 알아보기 - 튜토리얼 1 (Coordinator와 AppCoordinator 구현하기) 2022.07.11 - [🍎 iOS/Architecture Pattern] - [Swift] MVVMC 자세히 알아보기 - 튜토리얼 2 (childCoordinator로 이동하기) 2022.07.12 - [🍎 iOS/Architecture Pattern] - [Swift] MVVMC 자세히 알아보기 - 튜토리얼 3 (버튼 눌러서 화면 전환하기) 해당 튜토리얼은 위 글과 이어집니다! 이전 포스팅에서 Coordinator와 화면 전환에 대해 다루어 보았습니다. MVVMC에서 View와 Coordinator에 대해.. 2022. 9. 5.
[iOS] Fastlane으로 앱 배포 자동화하기 - 이론과 설치 왜 Fastlane을 사용했을까? 다른 프로젝트를 진행하면서 이전에 진행한 프로젝트의 유지 보수를 맡고 있습니다. 유지 보수 중인 앱은 변경 사항이 많진 않지만 조금의 수정만으로 테스트를 위해 6개의 앱을 빌드하여 in house로 배포해야 했습니다. 그 후 QA를 거치게 되는데 이 기간 동안 변경 사항이 발생하거나 수정해야 할 부분이 있다면 다시 수정을 하고 6개의 앱을 빌드해서 배포해야 했어요. QA가 끝나면 엔터프라이즈 계정으로 다른 서버에 배포하게 됩니다. 코드 수정이나 요구 사항은 적지만 조금의 수정으로 6개의 앱의 빌드(하는 것도 오래 걸림)와 배포하는 시간이 너무 오래 걸려서 진행하고 있는 프로젝트에도 영향이 오더라구요(여러개의 앱으로 분리하지 않기 위해 회의를 수십 번 했지만 안정성의 이유.. 2022. 9. 5.
[CI/CD] 지속적 통합과 지속적 배포의 개념과 장점 Intro 이전에 굉장히 흥미로운 영상을 본 적이 있습니다. 하나의 서비스를 어떻게 기획하고 사용자에게 제공되는지에 관련된 영상이었습니다. 사용자마다 버튼 배치를 다르게 보이게 해서 어떤 위치의 버튼이 더 많은 사용자에게 눌렸는지 로그를 수집하고, 이에 따라 의사 결정을 한다는 내용이었습니다. 이때 이 버튼의 위치를 바꾸는 프로세스를 잘 구축해 놓아서 조금의 수정으로 빠르게 A안 B 안을 테스트 해 볼 수 있었다고 합니다. 이렇게 작은 일부분을 수정 하는 것뿐만 아니라 서비스를 운영하다 보면 버그를 발견하게 되고 코드를 수정하거나 새로운 기능을 추가하여 사용자에게 배포하여 서비스하는 일이 잦습니다. 코드를 작성하거나 수정하게 되면 이 코드에 대한 검증을 위해 내부적으로 코드 리뷰를 하고 QA가 이루어진 .. 2022. 9. 3.
unable to boot the simulator launchd failed to respond 해결법 상단 xCode 클릭 > Preferences 클릭 Locations 탭 클릭 > 하단 Derived Data 의 폴더 경로에서 폴더 이동하기 아이콘 클릭 폴더에서 필요없는 DerivedData 지워 주기 빌드 후 시뮬레이터 재 실행 2022. 8. 22.