Starbucks Caramel Frappuccino
본문 바로가기
  • 그래 그렇게 조금씩

SwiftUI/SwiftUI(Intermediate)24

5. AVAudioPlayer 사운드 재생/ 열거형 (원시값,연관값) ⭐️AVAudioPlayer 사운드 재생, 열거형⭐️ 앱 내에서 사운드를 재생해야 하는 경우는 생각보다 많다. (많은 사람들이 무음모드로 사용하지만..) 특정 버튼을 눌렀을 때 효과음을 준다거나, 배경 음악을 깔아주면 앱의 퀄리티가 훨씬 높아진다고 생각한다. (better UX) Swift Student Challenge를 하면서, 그리고 아카데미 프로젝트를 진행하면서 효과음을 많이 사용했는데, 돌이켜보면 코드도 난잡했고 정리가 안되어 있었다. 그래서 간단하지만 깔끔하게 사운드 재생하는 방법을 정리하고자 한다. 외부 URL로 사운드를 재생할 수도 있지만, 여기서는 에셋 파일을 재생하는 방법으로 진행한다. 예시코드 1. 여러 뷰에서 사운드를 재생하고, 중지 해야하는 경우가 있을 수 있기에, 싱글톤 패턴으로.. 2023. 5. 23.
4. typealias 타입앨리어스 ⭐️typealias⭐️ 자주 써본 것은 아니지만, 잘 활용하면 좋을것 같은 타입앨리어스에 대해 알아보자. 말 그대로 타입의 별명을 지어주는 것이다. // Created by Toughie on 2023/05/22. // import SwiftUI struct MovieModel { let title: String let director: String let spectators: Int } //struct TVModel { // let title: String // let director: String // let spectators: Int //} //new name for existing type typealias TVModel = MovieModel 영화/티비/예능 서비스를 제공하는 앱을 만든다고 .. 2023. 5. 22.
3. CoreData Relationship/ 관계형 데이터 모델 ⭐️CoreData Relationship⭐️ Swift의 CoreData는 관계형 데이터 모델을 구성할 수 있는 기능이 있다. 관계형 데이터 모델에서 엔티티들의 관계를 나타내기 위해 'Relationship'을 사용한다. Relationshipdms 엔티티 간의 연결을 나타내는 속성으로, 1 : 1 / 1 : N / N : N 관계를 설정할 수 있다. Xcode의 모델 파일에서 inspector를 보면 Relationship type을 설정할 수 있다. (단일 관계 / 다중 관계) Xcode14 이전까지는 여러 엔티티들의 Relationship을 도식화 해서 보여주는 기능이 있었는데 무슨 이유인지 갑자기 사라졌다..;; 학습 예시로 사용했던 엔티티의 관계도는 아래와 같다. 각 엔티티의 attribute.. 2023. 5. 22.
2. CoreData 코어데이터 기본 CRUD ⭐️CoreData⭐️ 앱을 사용하다가 종료해도 데이터가 남아있어야 하는 경우가 많다. 작은 데이터라면 userDefaults, AppStorage 등을 활용할 수도 있지만, 더 크고 많은 데이터를 안정적으로 아이폰에 저장하기 위해서는 CoreData를 사용해야한다. https://developer.apple.com/documentation/coredata Core Data | Apple Developer Documentation Persist or cache data on a single device, or sync data to multiple devices with CloudKit. developer.apple.com '영구적으로 데이터를 기기에 저장'이 코어데이터 프레임워크의 핵심 기능이다. '로.. 2023. 5. 21.
1. sorted / filter / map / compactMap ⭐️sorted / filter / map / compactMap⭐️ 고차함수를 통해 배열을 좀 더 효율적으로 활용하는 방법을 알아보자. 먼저 예제를 위한 코드 MODEL // Created by Toughie on 2023/05/20. // import SwiftUI // MARK: MODEL struct UserModel: Identifiable { let id = UUID().uuidString let name: String let point: Int let isVarified: Bool } VIEWMODEL // MARK: VIEWMODEL final class ArrayModificationViewModel: ObservableObject { @Published var dataArray: [Us.. 2023. 5. 21.
0. Identifiable / Hashable ⭐️Identifiable / Hashable⭐️ 코딩하다 보면 자주 만나는(채택하는 경우가 많은) Identifiable, Hashable 프로토콜에 대해 정리해보자. Identifiable Protocol '식별 가능한 타입' 채택한 타입은 고유한 식별자를 가지고 있어야함. (id) id는 유니크한 값을 가지는 속성임. 컬렉션/테이블 뷰 등에서 데이터의 각 항목을 식별하기 위해 프로토콜이 요구됨. // Created by Toughie on 2023/05/20. // import SwiftUI struct MyModel: Identifiable { let id = UUID().uuidString let title: String } struct IdentifiablePrac: View { let dat.. 2023. 5. 20.