有可能吗?
我有一个新的iOS 14应用程序设置了核心数据和云工具包。我不得不对我的Persistence.swift文件做了一些修改才能让它正常工作,但它工作起来没有任何故障。
我对用other iCloud Users实现共享很感兴趣,但是很多文档都过时了,令人困惑,而且看起来以前可能是不可能的,但现在呢?
我认为第一步是让我的数据库共享?我将以下行添加到我的Persistence.swift文件
container.persistentStoreDescriptions.first!.cloudKitContainerOptions?.databaseScope = .shared(整个过程如下所示):
import CoreData
struct PersistenceController {
static let shared = PersistenceController()
let container: NSPersistentCloudKitContainer
init(inMemory: Bool = false) {
container = NSPersistentCloudKitContainer(name: "Shopmatic")
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 = NSMergeByPropertyObjectTrumpMergePolicy
container.persistentStoreDescriptions.first!.cloudKitContainerOptions?.databaseScope = .shared
}
}但是当我运行这个应用程序时,我得到以下错误
Thread 1: "CKDatabaseScopeShared is not supported with NSPersistentCloudKitContainer"这并不鼓舞人心,但也许可以在公共数据库范围内实现共享?
我真的不确定下一步是什么?实现我自己的NSPersistentContainer,既可以同步到cloudkit,也可以共享?
发布于 2021-03-24 09:58:27
我相信基于this thread on the Apple dev forums的答案是否定的(我是MasonAndMuse there),但有一位苹果工程师说可以,但他不愿详细说明。不久之后,我停止了尝试,没有找到任何方法来绕过这个系统的不透明性质,就像现在一样。我没有看到任何其他人让它工作的迹象,但在8个月前放弃后,我还没有仔细观察过。当然,也许有一种方法--我希望被证明是错的!
我假设他们在iOS 15中引入了共享,但现在这不是很有帮助……太糟糕了,因为它现在已经很接近了,如果/当他们添加它时,它将节省很多时间...
发布于 2021-04-24 03:45:38
论坛上的苹果工程师的answer对我来说读得非常清楚:
的
我还没有实现这样的功能,但我会这样做:
要使用CKDatabase.Scope = shared访问共享的Cloudkit数据库:
如果这是NSPersistentCloudKitContainer :
container = NSPersistentCloudKitContainer(name: "AppName")
我会尝试像这样访问这个容器的共享DB: :
let myAppsCloudKitContainer = CKContainer(identifier: "iCloud.com.name.AppName")
let myContainersSharedDatabase = myAppsCloudKitContainer.database(with: .shared)要从NSPersistantCloudKitContainer访问数据以在CloudKit共享功能中使用,请使用NSPersistantCloudKitContainer实例方法
record(for managedObjectID: NSManagedObjectID)https://stackoverflow.com/questions/66773027
复制相似问题