본문 바로가기

반응형

swift공부

(10)
[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과 같은 시작..
swift 주석(comments), 퀵헬프 주석(comments)을 왜 달까? 주석은 코드의 이해를 더 알기 쉽게 돕는다. 주석은 여러가지가 존재한다. // 한줄 주석 /* 이렇게 하면 여러줄의 주석을 만들 수 있다. */ 마크업 문법을 활용해서 주석달기 단축키: command option / 마크업 형식에 따라서 주석을 작성한다면 퀵헬프를 통해 내용을 확인할 수 있다. /// MARK: 나이 더하기 /// - Parameters: /// - a: a의 나이 /// - b: b의 나이 /// - Returns: 둘 나이의 합 func add(a: Int, b: Int) -> Int { return a+b } 퀵헬프란? Xcode에서 레퍼런스 문서의 요약된 내용을 보여주는 기능을 말함 마우스를 원하는 항목에 위히한 다음 option키를 누른 상태로..

반응형