将多个配置/持久存储添加到核心数据swift

时间:2016-08-15 21:03:43

标签: ios core-data

您好我遵循http://commandshift.co.uk/blog/2013/06/06/multiple-persistent-stores-in-core-data/教程并为核心数据创建了多个配置。我的一些实体在Configuration“SQLStorage”中,有些在“InMemory”中。

我希望SQLStorage配置能够使用NSSQLiteStoreType和InMemory配置来使用NSInMemoryStoreType。所以这就是我修改persistentStoreCoordinator getter的方法。

lazy var persistentStoreCoordinator: NSPersistentStoreCoordinator = {
        // The persistent store coordinator for the application. This implementation creates and returns a coordinator, having added the store for the application to it. This property is optional since there are legitimate error conditions that could cause the creation of the store to fail.
        // Create the coordinator and store
        let coordinator = NSPersistentStoreCoordinator(managedObjectModel: self.managedObjectModel)
        let url = self.applicationDocumentsDirectory.URLByAppendingPathComponent("SingleViewCoreData.sqlite")
        var failureReason = "There was an error creating or loading the application's saved data."
        do {
            try coordinator.addPersistentStoreWithType(NSSQLiteStoreType, configuration: "SQLStorage", URL: url, options: nil)
        } catch {
            // Report any error we got.
            var dict = [String: AnyObject]()
            dict[NSLocalizedDescriptionKey] = "Failed to initialize the application's saved data"
            dict[NSLocalizedFailureReasonErrorKey] = failureReason

            dict[NSUnderlyingErrorKey] = error as NSError
            let wrappedError = NSError(domain: "YOUR_ERROR_DOMAIN", code: 9999, userInfo: dict)
            // Replace this with code to handle the error appropriately.
            // abort() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development.
            NSLog("Unresolved error \(wrappedError), \(wrappedError.userInfo)")
            abort()
        }
        do {
            try coordinator.addPersistentStoreWithType(NSInMemoryStoreType, configuration: "InMemory", URL: url, options: nil)
        } catch {
            // Report any error we got.
            var dict = [String: AnyObject]()
            dict[NSLocalizedDescriptionKey] = "Failed to initialize the application's saved data"
            dict[NSLocalizedFailureReasonErrorKey] = failureReason

            dict[NSUnderlyingErrorKey] = error as NSError
            let wrappedError = NSError(domain: "YOUR_ERROR_DOMAIN", code: 9999, userInfo: dict)
            // Replace this with code to handle the error appropriately.
            // abort() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development.
            NSLog("Unresolved error \(wrappedError), \(wrappedError.userInfo)")
            abort()
        }

        return coordinator
    }()

加班我尝试编译此代码我收到错误:

  

CoreData:错误:-addPersistentStoreWithType:InMemory   配置:InMemory   网址:文件:///用户/开发/库/开发商/ CoreSimulator /设备/ 1D943405-C5AD-4CD4-9413-070DFC5334AB /数据/集装箱/数据/应用/ 2BEAF446-6F32-405B-B2B6-6B298D45E103 /文档/ SingleViewCoreData .sqlite   options:(null)...返回错误Error Domain = NSCocoaErrorDomain   Code = 134080“(null)”UserInfo = {NSUnderlyingException =无法添加   使用userInfo字典{同一商店两次} {       NSUnderlyingException =“无法两次添加同一商店”; }

     

2016-08-16 02:25:05.181 EncryptedCoredata [9457:461607]未解决   错误错误域= YOUR_ERROR_DOMAIN代码= 9999“无法初始化   应用程序保存的数据“UserInfo = {NSLocalizedDescription =失败   初始化应用程序保存的数据,   NSLocalizedFailureReason =创建或加载时出错   应用程序保存的数据。,NSUnderlyingError = 0x7ff25a840ba0 {错误   Domain = NSCocoaErrorDomain Code = 134080“(null)”   UserInfo = {NSUnderlyingException =无法两次添加同一商店}}},   [NSLocalizedDescription:无法初始化已保存的应用程序   数据,NSLocalizedFailureReason:创建或加载时出错   应用程序保存的数据。,NSUnderlyingError:错误   Domain = NSCocoaErrorDomain Code = 134080“(null)”   UserInfo = {NSUnderlyingException =无法两次添加同一商店}]

可能是什么问题?任何帮助,将不胜感激。提前谢谢。

0 个答案:

没有答案