묻고 답해요
156만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨[Lv.2] SwiftUI 중급 - Core Data와 SwiftData로 앱 완성하기
ViewBuilder 강의 관련 질문입니다.
강의 관련된 질문은 언제나 환영입니다 😄코드 관련 상세하게 작성해주시면 더 좋아요! (상세코드를 붙여넣기 해주세요)마크다운을 사용해서 편리하게 글을 작성하세요먼저 유사한 질문이 있었는지 먼저 검색 해보는 습관~인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요LocalViewBuilder에서 numberPlate에 ViewBuilder 매크로를 사용해야되는 이유를 LocalViewBuilder에 선언된 ViewType을 사용하려면 이라고 설명해주셨는 데, 그것과는 상관없이 numberPlate 안에서 분기 처리된 항목들(view1, view2, view3)이 다 다른 타입(Text, VStack, Image)이라서 ViewBuilder 매크로를 사용해야되는 것이 아닐까요 ?? 설명 듣다가 헷갈려서 질문드립니다.
-
미해결[Lv.2] SwiftUI 중급 - Core Data와 SwiftData로 앱 완성하기
CoreData Array의 변화에 따른 SwiftUI View 변화 적용(with @Observable Macro)
지난번과 동일하게 자꾸, @Observation을 활용하려다보니 문제가 많이 생기는 것 같습니다.정확하게 차이를 이해하려고 강의를 돌려봐도 제가 이해하고 있는 바와 다른 점들이 있는 것 같아 질문 드립니다. 강의의 내용은 CoreData를 다룰 때, fetch로 불러온 것을 View로 넘기기위한 변수 var savedEntities: [Fish] 를 만들고, :ObservableObject protocol을 활용하셨습니다. 이후 View에서 ViewModel을 처음 초기화할 때 사용하기 위해서 @Stateobject를 활용하여 설명을 하셨고요. 그렇다면, Observable Macro로 Migrating하기 진행하는데에도 문제가 없다고 생각을 했습니다.그래서, 아래와 같이 코드를 바꾸어 보았습니다. 그런데 문제는 Viewmodel에서 정의된 updateFish() method 가 적용되지 않습니다.List에서 주어진 생선 이름을 tap했을 경우, "~" 가 추가가 되어야 하는데,func updateFish(fish: Fish){ let currentName = fish.name ?? "" let newName = currentName + "~" fish.name = newName saveData() print("Updating fish name to: \(newName)") }와 같이 print를 찍어보았을 때, 디버그 창에서는 print가 되지만,View에서는 "~"가 추가되지 않는 모습을 확인할 수 있었습니다.CoreData의 변화를 감지하지 못하는건지.. 기초강의에서 FruitModel 예시에서는 ObservableObject대신 Observable Macro를 적용해도 되었었거든요.여기서도 fruitArray이라는 배열을 사용했는데 잘 적용되었습니다.@Observable Macro를 적용하는데에 있어서 제가 잘못 이해하고 있는 부분이 있을까요?var fruitArray: [FruitModel] 는 View에서 변화를 감지하여 실시간 Update가 가능한 반면var savedEntities: [Fish] 는 왜 변경되어도 View에서 변화를 감지 하지 못하는지 궁금합니다. 감사합니다.
-
미해결[Lv.2] SwiftUI 중급 - Core Data와 SwiftData로 앱 완성하기
init-deinit의 무한루핑을 벗어나는 방법이 궁금합니다.
ObservableObject를 활용하는 것보다,새로운 Observable Macro를 활용하여 Migrating을 시도하려 했습니다.주어진 WeakSelfInterViewModel 에 대해 @Observable을 적용하고, var data String? = nil 로 property를 만들었습니다. 하지만 Init과 Deinit이 반복되어 나타나는 무한루핑이 발생하였습니다. class WeakSelfInterViewModel{ var data: String? = nil ... } struct WeakSelfInter2: View { @State var vm: WeakSelfInterViewModel = WeakSelfInterViewModel() ... } 어떻게 해결할 수 있을까요?
-
해결됨[Lv.2] SwiftUI 중급 - Core Data와 SwiftData로 앱 완성하기
Apple 공식 문서 보는법
안녕하세요 좋은 강의 잘 듣고 있습니다.다름이 아니라 혹시 애플 공식 문서보는 강사님만의 꿀팁 같은게 있을까요?공식문서를 찾아볼 수 있긴 한데 찾고자 하는걸 정확하게 검색해야 결과를 얻을 수 있고 뭔가 보기가 어렵게 되어 있는 것 같아서요...그리고 제가 원하는 기능을 구현하려면 물론 구글링도 있지만 공식문서를 최대한 참고해서 구현 방법을 익히고 싶은데 이런 것들은 공식 문서에서 어떻게 검색해야 하나요?예를 들어 SwiftUI에서 반복문으로 이루어진 텍스트들을 한번에 지우는 기능을 구현하고 싶은데 이에 연관된 것들을 공식 문서에서 쉽게 찾는 방법 등을 알고 싶습니다.감사합니다.
-
미해결[Lv.2] SwiftUI 중급 - Core Data와 SwiftData로 앱 완성하기
5월 업데이트 예정이었던 , iOS17 컨텐츠 SwifData 업데이트 언제 되나요 ?
SwiftData - iOS 17 (24년 5월 중 업데이트 예정)
-
미해결[Lv.2] SwiftUI 중급 - Core Data와 SwiftData로 앱 완성하기
Spacer() 를 넣으니 예제처럼 SafeArea 확보가 안됩니다.
struct MatchedGemomatryEffectInter: View { @State private var isToogle: Bool = false var body: some View { VStack { RoundedRectangle(cornerRadius: 20) .frame(width: 100, height: 100) .offset(y: isToogle ? UIScreen.main.bounds.height * 0.7 : 0) Spacer() } .frame(maxWidth: .infinity,maxHeight: .infinity) .background(.green) .onTapGesture { withAnimation(.spring()) { isToogle.toggle() } } } }안녕하세요.동일하게 작성했는데 저는 상하 safeArea 가 채워진체나옵니다. 타겟은 iOS15 입니다. 강의 관련된 질문은 언제나 환영입니다 😄코드 관련 상세하게 작성해주시면 더 좋아요! (상세코드를 붙여넣기 해주세요)마크다운을 사용해서 편리하게 글을 작성하세요먼저 유사한 질문이 있었는지 먼저 검색 해보는 습관~인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요
-
미해결[Lv.2] SwiftUI 중급 - Core Data와 SwiftData로 앱 완성하기
Local Notification 예제 문의
예제를 전부 구현한 상태에서아래 코드를 통해서 뱃지 숫자를 1씩 올려서 보내게되어 있습니다. func scheduleNotification() { //notification 내용 설정 let content = UNMutableNotificationContent() content.title = "Local Notification 테스트 1" content.subtitle = "앱 알람 테스트 중입니다." content.sound = .default content.badge = NSNumber(value: UIApplication.shared.applicationIconBadgeNumber + 1)하지만 아래 코드에 의해 뱃지가 0 으로 리셋되기에항상 1만 발송하게 됩니다..onChange(of: scenePhase) { newValue in if newValue == .active { UIApplication.shared.applicationIconBadgeNumber = 0 } }추가적으로 5초 딜레이로 설정후 로컬노티 여러번 누른후에앱을 종료하고 기다리면 노티가 여러개 오지만모두 뱃지 1로 오기 때문에 앱아이콘에 뱃지는 1로 계속옵니다. 실무에서 로컬노티에 카운터를 현재 뱃지 카운터에 + 1 해서보내는건 실효성이 없어보이는데요. 따로 해결할 방법이 있을까요 ? 조언 부탁드립니다. 강의 관련된 질문은 언제나 환영입니다 😄코드 관련 상세하게 작성해주시면 더 좋아요! (상세코드를 붙여넣기 해주세요)마크다운을 사용해서 편리하게 글을 작성하세요먼저 유사한 질문이 있었는지 먼저 검색 해보는 습관~인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요
-
미해결[Lv.2] SwiftUI 중급 - Core Data와 SwiftData로 앱 완성하기
Local Notification 강의 편집오류 있어요
17:29 부분에서 변수명 scenePhase 타이핑중 sce 까지만 타이핑 하고 바로 화면 이동 됩니다.컷 편집 잘못된거 같아요. 강의 관련된 질문은 언제나 환영입니다 😄코드 관련 상세하게 작성해주시면 더 좋아요! (상세코드를 붙여넣기 해주세요)마크다운을 사용해서 편리하게 글을 작성하세요먼저 유사한 질문이 있었는지 먼저 검색 해보는 습관~인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요
-
미해결[Lv.2] SwiftUI 중급 - Core Data와 SwiftData로 앱 완성하기
강의중 코드폴딩 단축키 (커맨트+옵션+왼쪽방향키)
강의 중 함수내 코드폴딩 단축키는커맨드 + 옵션 + 왼쪽 방향키 입니다.Sorted,Filter,Map 강의 8:14 에커맨드 + 쉬프트 + 왼쪽 방향키로설명 되어 있어서 있어서 혼동 했네요. 강의 관련된 질문은 언제나 환영입니다 😄코드 관련 상세하게 작성해주시면 더 좋아요! (상세코드를 붙여넣기 해주세요)마크다운을 사용해서 편리하게 글을 작성하세요먼저 유사한 질문이 있었는지 먼저 검색 해보는 습관~인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요
-
해결됨[Lv.2] SwiftUI 중급 - Core Data와 SwiftData로 앱 완성하기
코어데이터에 중복값 입력 방지
강사님, 안녕하세요. 강의를 보면서 코드를 작성하던 중에 코어 데이터에서 값을 입력 할 때에 중복값이 계속 들어가는것을 확인하고 이것을 막고자 합니다. 어떤 방법으로 해야 하는지요? 아니면 제가 강의 중에서 놓친 부분이 있을 수도 있으니 해당 영상의 위치를 알려주시면 살펴보겠습니다.감사합니다.
-
해결됨[Lv.2] SwiftUI 중급 - Core Data와 SwiftData로 앱 완성하기
Combine 관련 질문드립니다.
안녕하세요. 강사님.현재 초급, 중급 강의 결제 후 아직 이전에 하던 공부가 마무리가 덜 되어서 강의를 시작하지는 않았는데요.이제 곧 마무리하고 SwiftUI 초급부터 들어가려고 하는데 Combine도 같이 배워야 좋다고 익히 들어서 Combine에 대해서도 같이 공부를 하려고 하는데 Combine에 대한 강의 업데이트 계획이 있으신가요? 있으시다면 언제쯤 업데이트 될 지도 궁금합니다!
-
해결됨[Lv.2] SwiftUI 중급 - Core Data와 SwiftData로 앱 완성하기
if let else 질문있습니다.
1.if let text = displayText {Text(displayText!) } else {ProgressView()}2.if displayText != nil {Text(displayText!)} else{ProgressView()} 1번과 2번 두 코드의 차이를 모르겠습니다.if let else를 쓰게되면 장점이 무엇인가요?
-
미해결[Lv.2] SwiftUI 중급 - Core Data와 SwiftData로 앱 완성하기
강의 Weak Self 코드 실행시 오류에 대해
강의에 대한 프로그램 실행을 하면 아래와 같은 에러가나고 화면상에 숫자는 "1"로 고정이 되네요. 강의 원본 소스도 같은 에러를 내보냅니다.Xcode는 15.0.1아이폰 모델은 15 Pro입니다 콘솔 로그초기화 시작Snapshotting a view (0x10b42e7e0, _UIButtonBarStackView) that is not in a visible window requires afterScreenUpdates:YES.초기화 시작초기화 해제Snapshotting a view (0x10597b1c0, _UIButtonBarStackView) that is not in a visible window requires afterScreenUpdates:YES.초기화 시작초기화 해제 소스//// WeakSelfInter.swift// SwiftUiIntermediate//// Created by KISOO LEE on 10/7/23.// import SwiftUI // MARK: - ViewModelclass WeakSelfInterViewModel: ObservableObject { @Published var data: String? = nil init() { print("초기화 시작") let currentCount = UserDefaults.standard.integer(forKey: "count") UserDefaults.standard.set(currentCount+1, forKey: "count") getData() } deinit { print("초기화 해제") let currentCount = UserDefaults.standard.integer(forKey: "count") UserDefaults.standard.set(currentCount-1, forKey: "count") } func getData() { DispatchQueue.main.asyncAfter(deadline: .now() + 10) { DispatchQueue.main.async { self.data = "NEW DATA !" } } } } // MARK: - Screen 1struct WeakSelfInter: View { @AppStorage ("count") var count: Int? init() { count = 0 } var body: some View { NavigationView { NavigationLink("2번째 페이지로 이동"){ WeakSelfInter2() } .navigationTitle("1번째 페이지") //: NavigationLink } //: NavigationView .overlay( Text("\(count ?? 0)") .font(.largeTitle) .padding() .background(Color.green.cornerRadius(10)) .padding() , alignment: .topTrailing ) }} // MARK: - Screen 2struct WeakSelfInter2: View { @StateObject var vm: WeakSelfInterViewModel = .init() var body: some View { VStack (spacing: 10 ) { Text("2번째 페이지") .font(.largeTitle) .foregroundColor(.red) } //: VStack if let data = vm.data { // data에 String 값이 있는 경우 Text(data) } }} #Preview { WeakSelfInter()}
-
해결됨[Lv.2] SwiftUI 중급 - Core Data와 SwiftData로 앱 완성하기
SwiftData가 Core Data를 대체하는지요?
SwiftData가 Core Data를 대체 가능한지요?대체 가능하다면 SwiftData를 먼저 배워도 괜찮은지 알고 싶습니다. 감사합니다.