본문 바로가기

반응형

swift공부

(11)
개인 프로젝트 (1) 리펙토링 2024년 2월에 취업에 성공한 뒤로 개인 프로젝트는 더 이상 진행되지 않았다. 회사 업무에 적응하는 것이 우선이라고 생각한 것도 있고 평일에 일하고 주말에 일과 일에 필요한 공부를 하다보니 개인적으로 공부할 시작이 없기도 했고 쉬고 싶은 마음이 있었던 것 같다.  그럼에도 다시 개인 프로젝트를 진행하는 이유는더 많은 걸 적용해보고 싶다. 업무에 바로 적용하기 위해서는 근거가 필요하다고 느꼈다. 하지만 그 근거는 경험에서 나온다고 생각하기에 적용해보지 않은 기술을 해야한다고 주장할 근거가 필요했다. 특히 모듈화, 테스트 코드, 코드 품질에 대해서 고민을 많이 할 수 있을 것 같다. 현재 앱 상태기존에 프로젝트를 오랜만에 열어보니 UIKit 기반에 MVVM 패턴으로 되어있었다. 그리고 SwiftUI가 중간..
[RealmSwift Test] "오운완" Mock을 활용한 Realm 테스트 요즘 테스트 공부를 한창 하고 있다. realm를 테스트할 때 실제 realm객체에 접근하고자 하면 테스트 간 일관성이 유지되지 않는다고 한다. (음..실제로 가짜 객체를 두지 않고 테스트 코드를 돌려봤을 때 RealmStudio에는 사실 반영이 되지 않았다. 그치만 또 이미 있는 데이터라고 나타나서 테스트도 되지 않았다.. 영향을 주는 것 같기도 주지 않는 것 같기도..더 알아볼 필요가 있을 것 같다.) 그래서 테스트용 가짜 객체를 만드는데 이것을 "Mock"이라고 한다. 실제 서비스에는 ProductionRealm, 테스트에는 MockRealm 이렇게 구분했다. 우선 프로토콜을 사용해서 RealmProvider(어떤 Realm을 제공해줄지) protocol RealmProviderProtocol { ..
DeviceKit 이용해서 기기별 레이아웃 적용 최근 프로젝트를 구상하면서 카메라 화면을 구성해보고 싶다는 생각이 들었습니다. 그런데 카메라는 비율을 보통 4:3 , 16: 9 이렇게 고정된 값으로 많이들 사용하기 때문에 아이폰 기기별 UI의 차이가 컸습니다.. 때문에 이것을 오토레이아웃으로 구현할지, 기기별로 따로 UI를 만들지 고민하다가 이번에 기기별로 따로 대응을 해보고자 했습니다! 그래서 어떻게 해볼 수 있을까 고민을 하다가 좀 더 쉽게 접근을 해보고자 DeviceKit을 사용해봤습니다! https://github.com/devicekit/DeviceKit GitHub - devicekit/DeviceKit: DeviceKit is a value-type replacement of UIDevice. DeviceKit is a value-type..
Swift 공부) iOS Google Admob 구현해보기 ,The Google Mobile Ads SDK was initialized without AppMeasurement 에러 해결 오늘은 앞으로 진행할 프로젝트에 광고를 달아보면 어떨까하는 생각에 Google Admob으로 광고를 띄우는 방법을 알아보았다. https://developers.google.com/admob/ios/quick-start 시작하기 | iOS | Google Developers iOS 앱을 제작 중인 AdMob 게시자를 위한 모바일 광고 SDK입니다. developers.google.com 사실 공식문서 중에 정말 쉽고 간단하게 나와있기 때문에 보고 그대로 따라하면 되지만 중간에 하나의 에러를 만나서 글을 써서 다음에 참고해야겠다라는 마음으로 글을 쓰게 되었다! 1. 모바일 광고 SDK 가져오기 여기에는 2가지 방법이 있다. cocoapods, SPM 공식문서에는 cocoapods을 권장하고 있지만 SPM이..
Swift Realm 알아보기 Realm이란? 모바일에 특화된 NoSQL 데이터베이스로 Swift, Java, Kotlin 등 다양한 SDK를 무료로 제공한다. Swfit를 공부를 하면서 데이터 저장을 필요로 할 때, UserDefaults, CoreData, SQLite등이 있지만 Realm 1) 작업 속도가 빠르고 2) Cross Platform을 지원해, 안드로이드 OS와 DB 공유가 가능 3) Real Studio를 통해 DB 상태를 확인할 수 있고 4) 코드가 직관적이다. https://realm.io/realm-swift/ Realm Swift Fast, Swifty data storage realm.io Model 정의 Realm에서 저장할 데이터 객체를 정의할 떄는 class를 만들고 필요한 property를 정의한다...
swift uikit preview(미리보기) 띄우기 코드로 UI를 작성하다보면 스토리보드랑 다르게 빌드를 해야만 볼 수 있어 불편한 점이 많았다. 그러한 불편한 점을 해결하기 위해서 SwiftUI의 Preview기능을 가져오면 쉽게 확인이 가능하다. (그냥 코드를 복사해서 가져다 쓰면 된다) extension UIViewController { private struct Preview: UIViewControllerRepresentable { let viewController: UIViewController func makeUIViewController(context: Context) -> UIViewController { return viewController } func updateUIViewController(_ uiViewController: UIV..
swift label 행간 늘리기 프로젝트를 하다 보면 디자이너의 요청대로 행간(줄 사이의 공간)을 조절해야 할 때가 있다. 피그마에 다음과 같이 행간을 조절하라는 예시 코드가 나와있다. 이걸 완성해 보도록 하겠다. let paragraghStyle = NSMutableParagraphStyle() paragraghStyle.lineHeightMultiple = 1.23 let titleAttrString = NSMutableAttributedString(string: diaryTitleLabel.text ?? "") titleAttrString.addAttribute(NSAttributedString.Key.paragraphStyle, value: paragraghStyle, range: NSMakeRange(0, titleAttrSt..
swift UITextView inset 제거 전부터 프로젝트를 하면서 해결하지 못했던 내용을 키워드를 찾아서 글을 써보고자 합니다. 현재 Leading 값으로 모두 16을 준 상태입니다. 이미지를 보시면 textView가 Label보다 밀려나 있는 것을 볼 수 있습니다. TextView는 기본값으로 inset이 설정되어 있기 때문에 이러한 결과나타나게 됩니다. 해결방법은 의외로 간단합니다. override func viewDidLoad() { super.viewDidLoad() viewColorSetting() titleTextView.textContainer.lineFragmentPadding = 0 titleTextView.textContainerInset = .zero } 첫번째 textView가 inset을 제거한 후 Label과 같은 시작..

반응형