【问题标题】:How to store a CloudKit CoreData instance in Shared Group Container?如何在共享组容器中存储 CloudKit CoreData 实例?
【发布时间】:2020-04-08 07:00:56
【问题描述】:

如果您需要与应用扩展共享核心数据,将容器存储在共享组中会很有用。

【问题讨论】:

    标签: core-data cloudkit nspersistentcloudkitcontainer


    【解决方案1】:

    你必须得到容器的描述,然后设置 URL:

    let momdName = "MyModel"
    
    guard let modelURL = Bundle(for: type(of: self)).url(forResource: momdName, withExtension:"momd") else {
        fatalError("Error loading model from bundle")
    }
    
    guard let mom = NSManagedObjectModel(contentsOf: modelURL) else {
        fatalError("Error initializing mom from: \(modelURL)")
    }
    
    guard let containerURL = FileManager.default.containerURL(forSecurityApplicationGroupIdentifier: "group.com.my-group")?.appendingPathComponent("My.sqlite") else {
        fatalError("Cannot get shared group URL")
    }
    
    let container = NSPersistentCloudKitContainer(name: momdName, managedObjectModel: mom)
    
    guard let description = container.persistentStoreDescriptions.first else {
        fatalError("###\(#function): Failed to retrieve a persistent store description.")
    }
    
    description.url = containerURL
    
    container.loadPersistentStores() { (storeDescription, error) in
        if let error = error as NSError? {
            // ...
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-25
      • 1970-01-01
      • 1970-01-01
      • 2018-12-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多