본문 바로가기

TIL

(41)
[TIL] '손상되었기 때문에 열 수 없습니다. 해당 항목을 휴지통으로 이동해야 합니다.' 오류 해결법 원인 발생 상황Realm Studio가 새로 업데이트되어 Application 폴더에 있던 파일만 지우고 새로 업데이트된 Realm Studio를 설치하여 실행하였는데 아래와 같은 오류창이 표시되었습니다. 순간 당황했지만 차근차근 원인 파악을 위해 바로 구글링을 해보았습니다. 원인MacOS에서는 다운로드한 파일에 대해서, 개발자 (Code Signing) 확인을 하고, 각 파일에 대해서 속성(Attribute)을 부여한다고 합니다.  여기서 코드 사이닝(Code Signing)이란 디지털 서명을 통해 해당 애플리케이션이 신뢰할 수 있는 출처에서 가지고 왔음을 보증하는 역할을 한다고 합니다. 말 그대로 애플리케이션이 악성코드를 가지고 있느냐를 판별해주는 역할해준다고 보시면 될 것 같습니다. MacOS에서는..
[TIL] Charts 적용기 적용 배경처음 SwiftUI Charts 프레임워크를 활용하여 그래프를 그리려고 하였습니다.하지만 제가 프로젝트 최소 버전을 iOS15로 설정해 두었기 때문에 iOS16이상에서만 사용가능한 Charts 프레임워크 버전 호환 이슈롤 불가능해보였습니다. 따라서 UIKit 기반으로 구성되어 있는 DGCharts 라이브러리를 대신 사용하였습니다. SwiftUI에서 UIKit 적용우선 DGCharts는 UIKIt 기반으로 구성되어있기 때문에 SwiftUI의 View Life Cycle에 속하게 하기 위해선 다음과 같은 과정을 거처야 합니다.UIViewRepresentable 프르토콜을 준수하는 구조체를 하나 선업합니다.UIViewRepresentable 프로토콜은 UIKit의 UIView 타입을 SwiftUI의 ..
[TIL] 숫자 타입 소수점 나타내기(feat. 디테일 설명) 오늘 포스팅은 숫자의 소수점을 일정 자리까지 나타내는 법에 대해 작성하고자 합니다. 생각보다 굉장히 간단합니다. 바로 아래 코드처럼 작성해주시면 되는데요.아래 코드는 정확히 묘사하면 소수 다섯재짜리에서 반올리하여 나타내준 것입니다.// 소수 넷제자리까지 나타내기Text("\(40294.392848223, specifier: "%.4f")") // 결과: 40294.3928 이렇게 끝맺음을 하면 아쉽기 때문에 조금 더 깊이 있게 들어가보겠습니다. 조금 더 깊이 들어가보자LocalizedStringKey SwiftUI의 Text 뷰에 대한 정의를 들어가보면 위와 같이 정의되어 있는 것을 확인해보실 수 있습니다.여기서 눈에 띄는 타입이 바로 LocalizedStringKey인데요. 애플 공식문서에 따르면 Lo..
[TIL] ForEach id 중복으로 인한 오류 해결 과정 문제 발생ForEach 구문으로 코인 순위를 화면에 그려주다가 아래와 같은 오류가 발생하였습니다. 오류 문구를 자세히 살펴보니 collection에서 ID 3이이 여러번 사용되어 발생한 오류였습니다.ForEach>, Int, ModifiedContent, String, TopRankCell>>, _PaddingLayout>>: the ID 3 occurs multiple times within the collection, this will give undefined results!   아래 사진에서 보시듯, ForEach 구문에서 id값으로 사용된 count가 3으로 고정되어 중복 할당 오류가 발생하였던 것입니다. 자 이제 그럼 해결하러 가보겠습니다. 해결 방법중복된 id값을 서로 구분지을 수 있는 값으..
[TIL] List 내부 ScrollView Horizontal Scroll 구현 구현 화면오늘은 SwiftUI로 아래  화면을 구현해보려고 하는데요. 그 과정에 기록하고자 글을 남겨봅니다.  화면  구현리스트 구현위와 같은 화면을 구성하기 위해 SwiftUI의 List를 처음으로 사용해 보겠습니다.List는 UIKit에서 TableView와 CollectionView의 일부 개념이 합처진 개념으로 리스트로 이루어진 뷰를 그릴 때 사용하는 SwiftUI의 뷰 중 하나입니다. 그래서 아래 사진과 같이 그리려는 뷰 계층의 최상단 뷰를 List로 구성해주었습니다. 섹션 나누기이제 그 다음 할 일은 아래 사진처럼 각 항목들을 섹션별로 분류하는 건인데요. 이 작업은 SwiftUI의 Section이라는 뷰를 활용하면 List 뷰 내부에서 섹션별로 나누어 줄 수 있습니다.따라서 아래 사진과 같이 ..
[TIL] Moya 첫 적용기(feat. 사용법) 적용 동기이전에는 Moya의 TargetType을 직접 구성하여 Router를 구성하였지만 이번 새로 프로젝트를 진행하며 Moya 라이브러리를 적용해보기로 하였습니다. Moya란?여러 블로그들을 참고한 결과 결론적으로 Moya가 탄생하게 된 배경엔 손쉬운 네트워크 통신과 용이한 테스트 코드 작성 때문이라고 합니다. Moya 공식 문서에는 아래와 같이 서술되어 있습니다.the basic idea of Moya is that we want some network abstraction layer that sufficiently encapsulates actually calling Alamofire directly. It should be simple enough that common things are eas..
[TIL] MVI 패턴 이번에 새로 시작하게 된 프로젝트에 MVI 패턴으로 도입하기로 결정하여 이번기회에 MVI 패턴에 대해 공부해보고자 이번 포스팅을 작성하게 되었습니다. MVI 패턴탄생 배경MVI 패턴은 MVVM에서 발생하는 상태 문제와 부수 효과라는 두 가지 문제를 해결하기 위해 탄생했다고 합니다. 그렇다면 여기서 상태 문제와 부수 효과란 무엇일까요?각각에 대해 코드 예시를 들어 설명해보겠습니다.상태 문제MVVM에서는 상태가 여러 ViewModel에 분산되어 있을 수 있습니다. 이는 상태 변경이 여러 곳에서 일어나기 때문에, 예기치 않은 방식으로 상태가 변할 수 있는 문제가 발생합니다.class CounterViewModel: ObservableObject { @Published var counter: Int = 0..
[TIL] Realm-Swift 라이브러리 SPM Build 오류 대응(Privacy Manifest) 상황5월 1일부터 도입된 Privacy Manfest 대응을 위해 Realm-Swift 라이브러리를 업데이트 후, 빌드하다 발생하였던 오류에 관해 대응했었던 과정을 기록하고 공유하고자 글을 남깁니다.  문제발생위 상황 설명란에서 선 언급한 바와 같이 Realm-Swift를 10.48.1 버전에서 10.50.0 버전으로 업데이트 후, 빌드하는 과정 중 다음과 같은 오류가 발생하였습니다. Swift package target 'Realm' is linked as a static library by 'MyAppName' and 'Realm', but cannot be built dynamically because there is a package product with the same name. 위 오류를 해..