Xcodeを使ってmacOSのネイティブアプリを開発している時、アプリのローカルデータベースに保存されているデータを全部消したい時があります。例えば自分の場合は、SwiftDataを使ってアプリを開発していて開発中のSwiftDataのモデルを変更した時です。開発中にデータモデルを変更したくらいでマイグレーション処理を書く必要はないので、単純にデータベースを削除したいのです。何故なら、そのままアプリを実行すると以下のようなエラーが発生してアプリを起動できなくなるためです(エラーメッセージはうろ覚えです)。
error: addPersistentStoreWithType:configuration:URL:options:error: returned error NSCocoaErrorDomain (134110)
Cannot migrate store in-place: Validation error missing attribute values on mandatory destination attribute,
上記のエラーは、既に作成されているテーブルに、後から追加したモデルのプロパティが存在しないため発生します。ローカルデータベースを削除して再起動すれば、テーブルが存在しない状態からアプリを起動することになるので、新たなスキーマでデータベースが作成されます。そのため、開発中にデータモデルを変更した場合は単純にデータベースを消してからアプリを起動したいのです。
が、これがなかなか難しい。開発中のアプリをアンインストールする方法がまずわからないし、開発中のアプリのバイナリを削除してもデータベースは削除されませんでした。
以下のSOの記事を読み、 ~/Library/Containers/your.app.bundle.here
に関連データが保存されていることを知りました。
xcode - How to remove macOS app from device during development - Stack Overflow
your.app.bundle.here
を削除した後、再度Xcodeからアプリをrunすると、新たなスキーマでアプリを起動することができました。まあ、それまでローカルに溜まっていたデータは全部消えますが。