본문 바로가기

모바일앱199

SwiftLint 세부설정하기 SwiftLint 세부설정하기 이전글: SwiftLint 세팅하기 SwiftLint를 brew로 설치해 사용하고 있다. 자동 수정세팅까지 해서 만족스럽게 사용을 하고있는데, 갑자기 AppDelegate함수가 120자 이상이라 경고 메세지가 등장하기 시작했다. 그래서 잠시 뒤로 미뤄 뒀던 SwiftLint 세부설정방법을 조사해본다. SwiftLint를 설정하지 않은 상태에서는 이부분은 아주 자연스러운 부분이다. 특히나 여기말고도 Delegate관련 함수들은 파라미터를 포함해 3줄, 4줄까지도 가는 함수들이 많기 때문에 이건 아니다 싶어 예외처리를 해야겠다는 생각이 들었다. SwiftLint를 세팅하면 보이는 경고 아래처럼 수정할 경우, 한줄에 120자 제한 경고는 사라진다. 방금전 이미지처럼 수정할 경우 .. 2022. 11. 1.
Alert생성할때 에러 Presenting view controllers on detached view controllers is discouraged. 📌 상황 새로 등장하는 ViewController에서 얼럿생성시 발생하는 에러 가끔씩 UIAlertController를 생성하고 그걸 새로운 UIViewController에서 띄울 때, 아래와 같은 경고 로그를 확인 하곤한다. Presenting view controllers on detached view controllers is discouraged. 📌 발생이유 이런 경고 로그가 생기는 이유는 생각보다 간단한 이유때문이다. UIAlert이 생겨야할 장소인 UIViewController가 모두 생성되어야 안전하게 Alert이 생성될 수 있기 때문이다. Apple에서 자체적.. 2022. 10. 31.
UIKit에서 SwiftUI의 Preview를 사용하는 방법 "TIL221031: How to use Preview in UIKit" 앱개발을 하는 중 UI작업을 할 때, 시각적으로 확인을 해야하는 경우가 생긴다. 물론 소규모의 앱이나 작업에서는 매번 빌드하는 것이 나쁘지않지만, 해당 페이지가 세부적인 항목이라 여러번 클릭하고 대기하고 심지어는 빌드시간이 오래걸린다면.. 우리는 많은 스트레스를 받게된다. 실제로 회사에서 빌드하는데 정말 많은 시간을 보내고, 그때마다 흐름이 끊기는 것을 경험한다. 이를 해결하기위해 여러 방면을 찾아보았다. 첫번째 방법은 SwiftUI의 Preview를 사용하는 방법이다. 하지만 단점은 SwiftUI를 사용해야 해당 기능을 킬수 있다는 것이었다. 아직 나의 작업환경이 구버전이기 때문에 대부분 UIKit 혹은 Objc라 엄두를 못내고 .. 2022. 10. 31.
SwiftLint 라이브러리 세팅하기 SwiftLint 다른 개발자와 협업을 하는 경우, 각자 다른 코드 스타일을 가지고 있기 때문에 자칫 가독성을 해칠 수가 있다. 그래서 SwiftLint는 현업에서도 매우 유용한 라이브러리다. SwiftLint에 대한 내용은 https://github.com/realm/SwiftLint 이곳에 아주 상세하게 나와있다. 심지어 한글도 지원된다.!! SwiftLint 설정하기 공식문서를 보면 다양한 설치방법이 소개되어있다. 가장 자주 사용하는 방법은 CocoaPods이나 Brew를 사용할 수 있다. CocoaPods CocoaPods를 사용하면 최신 버전 외에도 SwiftLint의 특정 버전을 설치할 수 있기 때문에 이 방법을 권장한다. → Homebrew는 최신 버전만 설치 가능 Podfile에 아래 내용.. 2022. 10. 28.
Unknown class @@ in Interface Builder file. Unknown class @@ in Interface Builder file. [Storyboard] Unknown class in Interface Builder file. 퇴근시간 20분전, Xcode로 내일부터 새롭게 작업할 프로젝트를 작성했는데 빌드가 안되는 것은 아니지만 하단에 에러로그가 찍힌다. 굉장히 찝찝하다. 이번 만큼은 에러로그없는 쾌적한 Xcode를 만들기 위해 바로 원인을 찾으려했는데 엄청나게 간단한 문제였다. Unknown class _ViewController in Interface Builder file 이 오류는 Xcode의 버그라고 알려져있기도 했지만 버그가 아니라 리얼 나의 실수일 수도 있다. Xcode가 워낙 버그가 많다고 하지만 이번엔 진짜 나 때문. 문제확인 일단 St.. 2022. 10. 27.
타임스탬프 다루기 스위프트로 코딩할 때 가끔 서버와의 통신 등을 이유로 유닉스 타임스탬프를 사용해야 할 때가 있습니다. 그런데 스위프트에서는 기본적으로 유닉스 타임스탬프 값을 얻는 방법을 제공하고 있지 않습니다. 따라서 이번 포스팅에서는 이를 간단하게 익스텐션으로 구현하는 방법에 대해 알아보겠습니다. 유닉스 타임스탬프(Unix Timestamp) 구현하기에 앞서 유닉스 타임스탬프에 대해 간단히 알아보겠습니다. 유닉스 타임스탬프란, 1970년 1월 1일 0시(UTC)를 기점으로 현재까지의 경과 시간을 초 단위로 환산하여 나타낸 값입니다. 예를 들어 2020년 1월 1일 0시(UTC)는 유닉스 시간으로 1577836800으로 표기합니다. 구현 방법 Date의 익스텐션에 프로퍼티 혹은 스태틱 프로퍼티를 추가함으로써 간단히 구현.. 2022. 9. 14.
UILabel 코드로 만들기 TIL_220529_UILabel CodeProgramming class MainViewController: UIViewController { let titleLabel: UILabel = { let label = UILabel() label.textColor = .black label.textAlignment = .center label.text = "메인화면" label.font = UIFont.boldSystemFont(ofSize: 70) return label }() // 뷰가 생성되었을때 override func viewDidLoad() { super.viewDidLoad() self.titleLabel.translatesAutoresizingMaskIntoConstraints = false .. 2022. 5. 29.
(Xcode) pragma mark 주석 사용법 주석사용법 Xcode 주석사용법 과거 Obejctive - C로 앱을 만들 때에는 #pragma mark - 라는 주석을 사용했어요. 그게 Swift로 바뀌면서 이제는 MARK 라는 주석으로 바뀌었습니다. 이를 포함해 Swift에서 사용하는 주석은 아래와 같습니다 // MARK : 설명 // TODO : 할일 // FIXME : 고쳐야 할 부분 // !!! : rudrh // ??? : 의문점 메서드 리스트 Xcode에서 상단에 있는 메서드리스트를 클릭해보면 주석처리한 부분과 메서드를 구분해 놓은것을 볼 수 있어요. 아울러 아이콘 모양도 살짝 달라요. MARK: 설명모양의 아이콘이 표시돼요 TODO : 투두리스트 모양의 아이콘 FIXME: 반창고 모양의 아이콘 Ex : Extension M : Metho.. 2022. 5. 28.
(ios) UIColor와 CgColor의 차이점 설명 🍊 CGColor 색상(color)을 해석하는 방법이 명시되어있는 색상 공간(color space)이 있는,색상(color)을 정의하는 요소의 집합입니다 Color는 코어그래픽스(CoreGraphics)프레임워크와 연결되어있어 앞에 CG가 붙었어요. 이 밖에도 CGRect, CGSize, CGPoint 도 CG의 데이터타입이에요. ios 에서 그려주는 것은 모두 코어그래픽스 프레임워크가 담당합니다 코어그래픽스 프로그래밍 가이드 https://developer.apple.com/documentation/coregraphics 코어그래픽스 개념, 메소드 등 https://developer.apple.com/library/archive/documentation/GraphicsImaging/Conceptual/.. 2022. 5. 25.
iOS 날짜정보를 불러와서 비교하기 현재 날짜 불러오기 let current = Date() let formatter = DateFormatter() formatter.dateFormat = "yyyy-MM-dd" let currentDate = formatter.string(from: current).components(separatedBy: "-") 숫자형으로 만들어 사용하기 let current = Date() let formatter = DateFormatter() formatter.dateFormat = "yyyy-MM-dd" // Date형태에서 String형태로 전환 let currentDate = formatter.string(from: current).components(separatedBy: "-") // String형태.. 2022. 5. 18.