Apple Scrumdinger示例应用程序使用两个真实数据源来展示不同的数据更新方式。本地数据源存储在设备上,通常是持久的,而云数据源存储在远程服务器上。
以下是示例代码中使用两个数据源的方式:
class ScrumsData: ObservableObject { @Published var scrums: [DailyScrum]
init(scrums: [DailyScrum] = []) {
self.scrums = scrums
#if DEBUG
createSampleData()
#endif
}
func load() {
// Load the local data stored on the device
scrums = [
DailyScrum(title: "Design", attendees: [attendees[0], attendees[1]], lengthInMinutes: 60),
DailyScrum(title: "App Dev", attendees: attendees, lengthInMinutes: 30),
DailyScrum(title: "Web Dev", attendees: attendees, lengthInMinutes: 90)
]
}
func save(_ scrum: DailyScrum) {
// Save the edits to the local data
}
}
class DataController: ObservableObject { static let shared = DataController()
@Published var hasLoaded = false
let scrumsData = ScrumsData()
var deletions: [DailyScrum] = []
init() {
#if DEBUG
scrumsData.createSampleData()
#endif
scrumsData.load()
hasLoaded = true
}
func delete(_ scrum: DailyScrum) {
deletions.append(scrum)
scrumsData.scrums.removeAll(where: {$0.id == scrum.id})
}
}
在这个示例中,ScrumsData类是本地数据源,DataController类是云数据源。ScrumsData类用于加载和保存本地数据,而DataController类用于在远程服务器上执行相同的操作。然而,这两个数据源都使用@Published属性来通知视图层刷新。
使用多个数据源可以提