Migrate from Core Data to SwiftData
- Replace Core Data with SwiftData for iOS 18+ - Create MoodEntryModel as @Model class replacing MoodEntry entity - Create SharedModelContainer for App Group container sharing - Create DataController with CRUD extensions replacing PersistenceController - Update all views and view models to use MoodEntryModel - Update widget extension to use SwiftData - Remove old Core Data files (Persistence*.swift, .xcdatamodeld) - Add EntryType enum with all entry type cases - Fix widget label truncation with proper spacing and text scaling 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -24,7 +24,7 @@ struct LongestStreakTemplate: View, SharingTemplate {
|
||||
var endDate: Date
|
||||
var fakeData: Bool
|
||||
|
||||
@State var moodEntries = [MoodEntry]()
|
||||
@State var moodEntries = [MoodEntryModel]()
|
||||
@State var selectedMood: Mood = .great
|
||||
|
||||
@State var showSharingTemplate = false
|
||||
@@ -57,28 +57,29 @@ struct LongestStreakTemplate: View, SharingTemplate {
|
||||
return image
|
||||
}
|
||||
|
||||
@MainActor
|
||||
private func configureData(fakeData: Bool, mood: Mood) {
|
||||
var _moodEntries: [MoodEntry]?
|
||||
var _moodEntries: [MoodEntryModel]?
|
||||
|
||||
if fakeData {
|
||||
_moodEntries = PersistenceController.shared.randomEntries(count: 10)
|
||||
_moodEntries = DataController.shared.randomEntries(count: 10)
|
||||
} else {
|
||||
_moodEntries = PersistenceController.shared.getData(startDate:startDate,
|
||||
endDate: endDate,
|
||||
includedDays: [1,2,3,4,5,6,7])
|
||||
_moodEntries = DataController.shared.getData(startDate:startDate,
|
||||
endDate: endDate,
|
||||
includedDays: [1,2,3,4,5,6,7])
|
||||
}
|
||||
let data = _moodEntries ?? [MoodEntry]()
|
||||
|
||||
let data = _moodEntries ?? [MoodEntryModel]()
|
||||
|
||||
var splitArrays = createSubArrays(fromMoodEntries: data, splitOn: mood)
|
||||
splitArrays = splitArrays.sorted(by: {
|
||||
$0.count > $1.count
|
||||
} )
|
||||
self.moodEntries = splitArrays.first ?? [MoodEntry]()
|
||||
self.moodEntries = splitArrays.first ?? [MoodEntryModel]()
|
||||
}
|
||||
|
||||
private func createSubArrays(fromMoodEntries: [MoodEntry], splitOn: Mood) -> [[MoodEntry]] {
|
||||
var splitArrays = [[MoodEntry]]()
|
||||
var currentSplit = [MoodEntry]()
|
||||
|
||||
private func createSubArrays(fromMoodEntries: [MoodEntryModel], splitOn: Mood) -> [[MoodEntryModel]] {
|
||||
var splitArrays = [[MoodEntryModel]]()
|
||||
var currentSplit = [MoodEntryModel]()
|
||||
for entry in fromMoodEntries {
|
||||
if entry.mood == splitOn {
|
||||
currentSplit.append(entry)
|
||||
|
||||
Reference in New Issue
Block a user