[iOS] Core Data 기본 개념 및 간단 예제
·
iOS/Swift
안녕하세요 🙇🏻‍♂️이번 포스팅에서는 Core Data에 대해 다뤄보겠읍니다! 포스팅은 편의상 편의 말투로 진행함다 😎  본문으로 들어가기 전에iOS, 면접 단골 질문인 해당 질문을 본적이 있을 것 임앱의 콘텐츠나 데이터 자체를 저장/보관하는 특별한 객체를 무엇이라고 하는가? [iOS] 면접 답변 정리이런식의 단순암기는 지양하지만 급한분들을 위해 가급적 가볍게 작성되었습니다. 제 경험을 바탕해서 작성하였으니 무수한 태클, 피드백, 훈수 부탁드립니다.작성되지 않은 질문은 작성중입ukseung2.tistory.com 해당 답변에 나는 "데이터베이스, 그 중 UserDefaults를 사용해 보았다." 라고 답변하였는데사실 UserDefaults 말고도 iOS에서 사용할 수 있는 데이터베이스가 많은데.뭐가..
[iOS] Firebase Crashlytics 설정
·
iOS/Library
안녕하세요 🙇🏻‍♂️아무리 잘 짜여진 코드, 잘 짜여진 프로젝트라도 앱 크래쉬 혹은 오류를 피해갈 수 없는데요, 만약 완벽하게 피해갈 수 있다면 유지보수 회사들은 죽어날거에요..Crash나 로직상 오류가 발생하는 경우 대응을 잘 해서 배포를 나간다던가 하면 되는데!서버는 오류 로그를 통해 확인 할 수 있지만, 앱은 외부 라이브러리의 힘을 빌리곤 합니다.이 라이브러리는 앱이 Crash가 발생했을때 file, function, line, 이벤트 유형, 버전 까지 확인이 가능합니다!라이브러리 적용을 안할 이유가 없겠죠?!포스팅은 편의상 편의 말투로 진행함다 😎 1. Firebase ConsoleFirebase Console에서 GoogleService-Info.plist을 다운받아 프로젝트 루트에 추가2..
[iOS] Tuist CLI, 나도 한번 써보자
·
iOS/Tuist
안녕하세요 🙇🏻‍♂️프로젝트를 진행하다보면 git merge를 하는 과정에서 .pbxproj파일 conflict로 고생하는 경우가 종종있는데그것을 해결하고자 Tuist를 적용해보자해서 쓰는 포스팅임다포스팅은 편의상 편의 말투로 진행함다 😎 Tuist란?Tuist는 iOS 및 macOS 애플리케이션의 프로젝트와 작업 공간을 효율적으로 관리하고 생성할 수 있게 도와주는 오픈 소스 도구입니다. Tuist는 Xcode 프로젝트의 구성과 설정을 코드로 정의하고 관리할 수 있게 해줍니다. 이를 통해 복잡한 프로젝트 설정을 자동화하고 일관성을 유지할 수 있습니다.Tuist는 초기 설정이 복잡하고 시간이 많이 들어가지만 세팅 이후에는 모듈 생성과 모듈간의 의존성 정의가 매우 간편해집니다 이게 무슨말이냐 라고 생각..
[iOS][SwiftUI] TCA란? TCA를 활용한 간단 예제
·
iOS/SwiftUI
안녕하세요 🙇🏻‍♂️SwiftUI를 공부하다보니 SwiftUI의 디자인 패턴에는 무엇이 있을까 하다가TCA를 발견해 포스팅 해보려고 합니다.포스팅은 편의상 편의 말투로 진행함다 😎   개요프로젝트를 진행하려고 프로젝트 설계를 하고 있었는데 문뜩 드는 생각이 UIKit은  RxSwift+MVVM을 채택하여 프로젝트를 구현 했었는데, SwfitUI도 MVVM패턴을 적용하면 되는건지 궁금했음.. 🧐근데 다행히도 나와 같이 생각하는 사람들이 꽤나 많았음 ㅋ MVVM이 불필요하다는 여러 개발자들의 의견이 있다!애플 디벨로퍼 포럼을 포함한 다양한 포럼에서 개발자들은 SwiftUI에서 MVVM을 사용하는 것이 불필요하다고 주장하고 있음.!(ref. https://developer.apple.com/forums..
[Swift] Framework,SDK 생성 및 import 하는 방법
·
iOS/Swift
안녕하세요 🙇🏻‍♂️오랜만이에오 ㅎㅎ 포스팅이 소홀했네요,, 다시 열심히 포스팅하기 도전 💪🏻 이번에 Objective-C로 만들어진 Project가 있는데해당 Project를 Swift로 migration할 예정이라 기록 해봅니다!포스팅은 편의상 편의 말투로 진행함다 😎 1. Xcode 열기 -> Create New Project... 2. Framework & Library, Framework 선택후 Next 3. Product Name 기입후 Next Include Tests와 Include Documentation은 필요하신 분만 체크 바람!UnitTest와 프로젝트에 대한 Documentation을 포함할건지 물어보는 것(나중에 추가/삭제 가능)저는 UnitTest를 진행할 예정이기 때..
[UIKit] Storyboard없이 CodeBaseUI 코드 구현
·
iOS/UIkit
안녕하세요 욱승입니다!오늘은 스토리보드 없이 CodebaseUI를 구현 해볼까 합니다!포스팅은 편의상 반말루 Swift의 UI는 두개로 나뉘는데 UIKit과 SwiftUI로 나뉘어요Storyboard는 UIKit으로 분류되는데요새는 Storyboard로 UI를 그리기도 하지만 CodeBase로만 UI를 그리는 경우도 있답니다.   CodeBaseUI 구현의 장단점장점1. 협업 및 유지보수가 용이2. 앱이 실행될때 Storyboard에 비해 무겁지 않음3. 앱이 커지면 커질수록 장점을 가지는 구현 방법(1번의 이유) 단점1. 러닝커브가 발생2. Storyboard와는 다르게 한눈에 볼수는 없다  그래서 어떻게 하냐..!? 1. 스토리보드 파일 삭제 2. 프로젝트 Build Setting > Info.pli..
[Swift] 앱 빌드 오류, failed: Operation not permitted (1)
·
iOS/Swift
안녕하세요 욱승입니다!오늘은 오류 포스팅을 해볼까합니다!포스팅은 편의상 반말루  오류 메시지 해결 방안보아하니 Pod(라이브러리)쪽 오류인듯 보이더라.. 찾아보니 Xcode15에서 최근 들어 많이 보이는 오류로 Build Setting에 대한 오류임! 내가 해봤던 해결책은 개발자들이라면 다 해보았던  1. DerivedData 삭제2. 재부팅3. Podfile Update(업데이트) 혹은 deintegrate후 install(재설치)4. 해당 파일쪽 chmod 권한 수정 위에 4가지 방법은 해결책이 아니였고 찾아보기론 Xcode15부터 해당 옵션 Default값이 NO에서 YES로 변경 되었다고 들었음! 해당 옵션이 Yes로 되어있을탠데 No로 변경하면 해결됨!  XCode내에서 스크립트를 사용하지 않는..
[iOS] 아이폰 검색(Spotlight), 앱과 다른이름이 검색되게 하기
·
iOS
안녕하세요 욱승임다 제목대로 이번 포스팅에서는 앱과 다른이름이 검색되게 하는 방법을 알아보겠읍니다 포스팅은 편의상 반말로! 🙇🏻‍♂️ 이게 무슨말이냐 하시는 분들도 계실탠데 App Display Name은 'TMAP'이지만 '티'를 검색해도 검색 결과에 나오는 걸 볼수있음 + 물론 TMAP으로 검색해도 앱 검색이 가능! 프로젝트의 info.plist에 Accessbility Bundle Name을 추가하면 검색이 가능하다! (아마 'TMAP'도 '티맵'으로 설정 해놓았을 것) 설정후 빌드하니! 결론 이게 생각보다 구글링해도 안나오길래 애플에도 문의 해봤지만 다른 방안을 제시했지 이 방안을 제시하진 않았음! 나중에 쓰일법하니까 알아두자 ㅋ Ref. [iOS] 아이폰 검색(spotlight)에 앱 이름과 다..
[Swift][UIKit] RxSwift + MVVM, FaceID & TouchID authentication
·
iOS/Swift
안녕하세염 욱승입니당 이번 포스팅에서는 앱에서 필수로 쓰이는 FaceID 및 TouchID 인증을 알아보겠읍니다포스팅은 편의상 반말루 ㅋ  importimport LocalAuthentication해당 라이브러리는 Apple 내장 라이브러리라 Cocoapods이나 Packages에 추가할 필요 음슴 info.plistFaceID를 사용하는 기기면Privacy - Face ID Usage Description를 추가해조야댐 구현(View)//// LocalAuthenticationViewController.swift// SwiftPractice//// Created by ukseung.dev on 2023/10/05.//import Foundationimport UIKitimport RxSwiftim..
[Swift] Get DeviceModel Name, 디바이스 모델명 가져오기
·
iOS/Swift
안녕항셍용 욱승임다 시뮬레이터에 이어서 디바이스 모델명 가져오는 코드를 작성해보겠슴당시뮬레이터는 'Simulator'  함수func getModelName() -> String { var systemInfo = utsname() uname(&systemInfo) let machineMirror = Mirror(reflecting: systemInfo.machine) let model = machineMirror.children.reduce("") { identifier, element in guard let value = element.value as? Int8, value != 0 else { return identifier } return identifi..
[iOS] 비공개 앱 배포, Unlisted App Distribution
·
iOS
안녕하세요 욱승임다 프로젝트 마무리라 미리 심사에 올려놨는데 또 리젝 당했음다 한번에 되는게 없지 ㅋ 맞아요.. 사내 전용 앱이라 비공개 배포를 해야합늬당 전반적인 설명을 먼저드리자면 해당 리젝사유는 사내 전용 앱이라 앱을 앱스토어에 게시 할 수없습니당 왜냐하면 앱스토어는 공개적으로 모든 사용자들이 사용할 수 있어야 하기때문에 리젝 사유가 되는데 그러면 어떻게 하는게 좋냐... 비공개 배포로 배포 해버리면 됩니당 비공개 배포(Unlisted App Distribution)란? Ref. https://developer.apple.com/kr/support/unlisted-app-distribution/ 등록되지 않은 앱 배포 - 지원 - Apple Developer 포럼 Apple 엔지니어 및 다른 개발자..
[Xcode] Archive, Command PhaseScriptExecution failed with a nonzero exit code
·
Xcode
안녕하세요 욱승입니다. 오랜만에 새 프로젝트를 testflight에 올릴려고 Archive를 하는 도중 에러를 만났읍니다 ㅋ 이거 때문에 야근하는건 안 비밀 Pod의 경로를 찾지 못해 발생하는 에러 해결 방법 어뜨케? 일케 ㅋ source="$(readlink -f "${source}")" 결론 해당 오류는 자주 발생하지만 조금 포괄적인 오류라 겪어보지 않으면 쉽게 해결하기 힘들 것 같당 오류의 자세한 내용을 보고 대응하면 해결하기 수월 할 듯 !
욱승