MapKit (32)
iOS 17 Update Resource 기존에 Image를 Asset에 넣을경우 아래와 같이 String으로 입력했어야 했다. 이때 오타가 발생하면 해당 이미지를 사용못하는 큰 단점이 존재했다. // Constants // Before enum PlaceholderImage { static let avatar = UIImage(named...
iOS 17 Update Resource 기존에 Image를 Asset에 넣을경우 아래와 같이 String으로 입력했어야 했다. 이때 오타가 발생하면 해당 이미지를 사용못하는 큰 단점이 존재했다. // Constants // Before enum PlaceholderImage { static let avatar = UIImage(named...
iOS 16 Update 15에 이어 16도 적용해보도록 한다. Warning 해결하기 이렇게 Warning이 발생하는데 Main actor-isolated instance method 'locationManager(_:didUpdateLocations:)' cannot satisfy nonisolated requirement didUpda...
iOS 15 Update iOS 15의 마지막글 Pull to Refresh 현재 이 앱의 단점은 refresh를 하려면 다시 해당 view로 들어가야한다. // ListView .refreshable { viewModel.getCheckedInProfilesDictionary() } refreshable Modifer를 추가해주었다. ...
iOS 15 Update 이전글에 이어서 3탄 CloudKit 관해서는 아마 마지막 글이 될듯하다. CloudKit (3) getCheckedInProfilesCount 코드 변경 // Before func getCheckedInProfilesCount(completed: @escaping (Result<[CKRecord.ID: Int...
iOS 15 Update 이전글에 이어서 2탄 이번에도 꽤나 글이 길지않을까 예상 CloudKit (2) getCheckedInProfilesDictionary 코드 변경 이건 코드블럭 자체가 꽤나 길지만 그래도 생략없이 전부 적어본다. // Before func getCheckedInProfilesDictionary(completed: @esca...
iOS 15 Update CloudKit (1) 이전글이 너무 길어서 CloudKit쪽은 여기에 한다. 우선 여기서 다룰 주제는 Async/Await 이다. 상당히 흥미로운 부분이고, 뭐 이전에도 공부를 했지만 여러 각도에서 배우고 정리하면 좋으니까 여기에도 또 적어본다. 사실 Concurrency는 개인적으로 Swift에서 아주 중요하다고 생...
iOS 15 Update 이 강의가 오래된 강의였다보니 강의를 보면서 코드를 치더라도 꽤나 많은것들이 이미 Deprecated가 되어 있었다. Deprecated Modifiers Docs여기보면 상당히 많으니 참고. 먼저 iOS 15부터 해본다. 아마 내용 전개는 Deprecated된 코드를 before & after 로 수정하면서 가지...
Deploy CloudKit 사이트 들어가서 이걸 누르면 된다. CloudKit 환경 비교: Development vs Production 그리고 CloudKit에는 Development와 Production으로 나뉘어 지는데, 표로 간단하게 정리를 하면 구분 Development (개발 환경) ...
CloudKitManager 코드 다듬기 1. 관계 정보 추출 로직 최적화 // Before operation.recordFetchedBlock = { record in // Build our dictionary let profile = DDGProfile(record: record) guard let locationRe...
LocationDetailView 보강 Extension의 문제점? extension LocationDetailView { final class LocationDetailViewModel: ObservableObject { // 생략 } } 이렇게 이전글에서 extension을 사용해서 View와 ViewModel을...