Seb*_*bbe 7 core-data nsfetchrequest icloud swift swiftui
所以......我有一个启用了 StoreData 和 iCloud 的应用程序。我的数据正在设备之间同步,但在反映 UI 中的更改时,我没有得到我想要的行为。
我想要的行为:当用户在两个设备(A 和 B)上打开我的应用程序并对其中一个(A)进行更改时,我希望更改在合理的时间内自动反映在第二个(B)设备 UI 中.
我目前的行为:当用户在一台设备 (A) 上进行更改时,另一台设备 (B) 上什么也没有发生……直到我最小化和最大化第二台设备 (B) 上的应用程序(不重新启动……只是最小化)。
我的想法是,在最小化和重新打开应用程序时触发某些操作之前,应用程序不会收到更改(iCloud 不会同步)。
但我不知道。根据Syncing a Core Data Store with CloudKit同步和通知其他设备应该自动发生。而且我认为我的 View 应该正确连接,因为在对 CoreData 数据库中的数据进行本地更改时它会立即更改。
我的 SwiftUI 视图几乎如下所示:
import SwiftUI
import CloudKit
import Foundation
struct MyView: View {
@FetchRequest(fetchRequest: Entity.fetchRequest() as! NSFetchRequest<Entity>) var entities: FetchedResults<Entity>
var body: some View {
List {
ForEach(entities, id: \.id) { e in
Text("\(e.title)")
}
}
}
}
public class Entity: NSManagedObject {
@NSManaged public var id: UUID?
@NSManaged public var title: String
}
Run Code Online (Sandbox Code Playgroud)
任何帮助深表感谢! (如果我需要提供其他信息,请告诉我。)
// MARK: - Core Data stack
lazy var persistentContainer: NSPersistentCloudKitContainer = {
let container = NSPersistentCloudKitContainer(name: "ComCloudSync")
container.loadPersistentStores(completionHandler: { (storeDescription, error) in
if let error = error as NSError? {
fatalError("Unresolved error \(error), \(error.userInfo)")
}
})
return container
}()
Run Code Online (Sandbox Code Playgroud)
尝试添加以下代码(将“ComCloudSync”更改为您的应用程序名称):
// MARK: - Core Data stack
lazy var persistentContainer: NSPersistentCloudKitContainer = {
let container = NSPersistentCloudKitContainer(name: "ComCloudSync")
container.loadPersistentStores(completionHandler: { (storeDescription, error) in
if let error = error as NSError? {
fatalError("Unresolved error \(error), \(error.userInfo)")
}
})
container.viewContext.automaticallyMergesChangesFromParent = true
container.viewContext.mergePolicy = NSMergeByPropertyStoreTrumpMergePolicy
return container
}()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1385 次 |
| 最近记录: |