강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

nonehour님의 프로필 이미지
nonehour

작성한 질문수

[Lv.2] SwiftUI 중급 - Core Data와 SwiftData로 앱 완성하기

Sorted, Filter, Map

Sorted, Filter, Map - UserViewModel 부분 오류 발생

작성

·

15

0

강의 관련된 질문은 언제나 환영입니다 😄

  • 코드 관련 상세하게 작성해주시면 더 좋아요! (상세코드를 붙여넣기 해주세요)

  • 마크다운을 사용해서 편리하게 글을 작성하세요

  • 먼저 유사한 질문이 있었는지 먼저 검색 해보는 습관~

  • 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세

    스크린샷 2025-09-23 오전 11.15.53.png.webp

Protocol requires property 'objectWillChange' with type 'Self.ObjectWillChangePublisher' (Combine.ObservableObject.objectWillChange)


Initializer 'init(wrappedValue:)' is not available due to missing import of defining module 'Combine'


이렇게 두개의 오류가 뜨는데. 영상을 봐도 해당 코드와 다른게 없어서 질문드립니다. 혹시 어떤 부분이 문제일까요?

답변 1

0

Jacob(제이콥)님의 프로필 이미지
Jacob(제이콥)
지식공유자

안녕하세요. nonehour 님

에러 발생 원인

현재 코드에서 두 가지 주요 문제가 발생하고 있습니다:

  1. ObservableObject 프로토콜 준수 실패: UserViewModel 클래스가 ObservableObject를 채택했지만 필요한 요구사항을 충족하지 못하고 있습니다.

  2. Combine 프레임워크 누락: @Published 프로퍼티 래퍼와 관련된 초기화자를 찾을 수 없다는 에러가 발생합니다.

해결 방법

파일 상단의 import 구문을 다음과 같이 수정해주세요:

import SwiftUI
import Combine  // 이 줄을 추가해주세요

왜 이런 차이가 발생하는가

이런 현상이 발생하는 이유는 개발 환경의 차이 때문입니다:

  • Xcode 버전 차이: 최신 Xcode에서는 SwiftUI를 import할 때 Combine도 함께 자동으로 가져오는 경우가 있지만, 구버전이나 특정 설정에서는 그렇지 않을 수 있습니다.

  • iOS 배포 타겟: 프로젝트의 iOS 최소 지원 버전에 따라 자동 import 동작이 달라질 수 있습니다.

  • 프로젝트 설정: 프로젝트 생성 방식이나 빌드 설정에 따라 모듈 import 방식이 다를 수 있습니다.

근본적인 이해

@PublishedObservableObject는 실제로 Combine 프레임워크의 핵심 구성 요소입니다. 따라서 이들을 사용할 때는 명시적으로 Combine을 import하는 것이 가장 안전하고 명확한 방법입니다.

강의 예제와 달라서 에러가 발생된점 양해 드립니다.

감사합니다.

Jacob

nonehour님의 프로필 이미지
nonehour

작성한 질문수

질문하기