提问人:Maarten 提问时间:11/2/2023 更新时间:11/2/2023 访问量:27
如果设备上没有数据,iCloud中也没有数据,则向Core Data添加数据
Adding data to Core Data if there is no data on device and no data in iCloud
问:
对于我正在构建的应用程序,我想在首次打开应用程序时为用户设置应用程序。这意味着在 Core Data 中创建一个列表 (ListEntity)。我在持久性控制器中执行此操作。(我使用 Xcode 自动生成的控制器)。
该应用程序使用 iCloud 同步数据,在本例中为设备之间的列表。因此,当用户第一次打开应用程序时,需要检查iCloud中是否有数据。如果 iCloud 中有数据,则不应在 Core Data 中创建列表。但是,如果没有,则需要创建一个。
@FetchRequest(sortDescriptors: [NSSortDescriptor(keyPath: \ListEntity.name, ascending: true)],
animation: .default)
var lists: FetchedResults<ListEntity>
我认为很聪明,只需在 PersistenceController 的 init 末尾使用一个@FetchRequest并对其使用计数。但这是个坏主意。是的,它可以计算项目,但也会出现错误。 此外,如果我使用下面的代码,它仅在没有iCloud数据和设备上时才有效,但在iCloud中有数据时才有效。什么导致了两个列表。什么不应该是这样。Accessing StateObject's object without being installed on a View. This will create a new instance each time.
if lists.count != 0 {
prepopulateData()
} else {
UserDefaults.standard.set(true, forKey: "DataPreloaded")
}
问题是如何以一种有效且干净的代码的方式解决这个问题?
答: 暂无答案
评论