状況
SwiftUIでObservableObjectを使った実装は以前にもしたことがあって、
同様の感じで実装しても、
何故か"Type 'SampleManager' does not conform to protocol 'ObservableObject'"というエラーが出ていました。
これがサンプルコードです。
Sample.swift
import SwiftUI
class SampleManager: ObservableObject {
static let shared = SampleManager()
func something() {
// do something
}
}
struct ContentView: View {
@ObservedObject var manager = SampleManager.shared
var body: some View {
Text("これはサンプルです。")
}
}
環境
- Xcode 26.2
- MacOS 15.7.3
解決策と原因
解決策は簡単で、import Combineをすればよいだけでした。
原因は、iOS17以降、Xcode15以降で@Observableが導入されており、@ObservedObjectの使用が非推奨になっているためです。
サンプル作成のためにXcode26で新規にプロジェクトを作って試していたので、気がつきませんでした。