본문 바로가기

분류 전체보기179

[RxSwift] RxDataSources로 UITableView 셀 바인딩 하기 보호되어 있는 글 입니다. 2022. 10. 10.
[RxSwift] UITextField로 검색하기(debounce, distinctUntilchnaged, share) debounce debounce는 사용자가 지정한 시간 (timespane) 내에 방출되는 값에서 가장 마지막 값을 방출함 이벤트가 방출하고 나면 timespane은 초기화 됨 주로 사용자가 검색필드에서 검색어를 입력할 때마다 그 결과값을 보여주기 보다는 debounce로 timespane 내에 마지막 입력에 대해 결과값을 보여줄 수 있음 distinctUntilchanged 중복된 값이 입력되면 해당 값을 무시함 사용자가 텍스트를 빠르게 입력한 경우 가장 처음에 입력된 텍스트만 방출됨 UITextField의 경우 .allEditingEvents에 의해 입력 시작, 입력된 값의 수정, 입력 끝일 때 값을 방출하게 됨. distinctUntilChnaged 를 사용하게 되면 입력된 값의 변화가 일어나야 방.. 2022. 10. 10.
[RxSwift] Traits의 Single과 Service for Network 보호되어 있는 글 입니다. 2022. 10. 9.
[RxSwift] Input Output ViewModel with MVVMC 보호되어 있는 글 입니다. 2022. 10. 9.
[RealmSwift] Migration, 운영 중인 앱의 필드 추가한 후 마이그레이션 해주기 class Customer: Object { @objc dynamic var idx = 0 @objc private dynamic var privateType: Int = CustomerType.active.rawValue let products = List() } 이미 운영 중인 앱에(혹은 코드를 작성 중) 3개의 프로퍼티가 있음. 이미 realm을 이용해서 객체를 생성해 realm 데이터베이스에 add 해준 후 나중에 다른 프로퍼티를 생성하려 하면 오류가 발생 Realm Studio를 사용해서 조회해 보면 이미 3개의 프로퍼티에 대한 값만 지정되어 있음 class Customer: Object { @objc dynamic var idx = 0 @objc dynamic var name = "무명" @o.. 2022. 10. 2.
[RealmSwift] 객체 조회하기 모든 객체 조회 모든 객체를 조회하고 싶은 경우 objects 메소드를 사용할 수 있음 let allProduct = realm.objects(Product.self) PrimaryKey를 이용한 조회 primary key의 경우 int와 String 모두 가능하지만 고유의 가질 수 있는 String을 사용할 것을 권장함 let customer = realm.object(ofType: Customer.self, forPrimaryKey: 1) 이때 primaryKey 조건에 해당하는 객체가 있을 수도 있고 없을 수도 있으므로 리턴되는 객체는 옵셔널 NSPredicate 쿼리 생성 cheetsheet : https://academy.realm.io/posts/nspredicate-cheatsheet/ le.. 2022. 10. 2.
[RealmSwift] LinkingObjects와 Realm Studio 관계형 데이터베이스에서 테이블과 테이블간의 관계를 만들어 줄 수 있음 LinkingObjects를 사용하면 1:n, 1:1 관계를 만들어 줄 수 있음 class Customer: Object { @objc dynamic var idx = 0 let products = List() } Object를 상속받는 모델 클래스에서 프로퍼티를 생성해 줌 array 타입으로서 Customer은 여러개의 Product를 가짐 Customer 객체에는 Product에 대한 참조가 생김 class Product: Object { @objc dynamic var name = "" @objc dynamic var price = 0 let ofCustomer = LinkingObjects(fromType: Customer.se.. 2022. 10. 2.
[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.