Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
启用核心数据Xcode Swift_Swift_Xcode_Core Data - Fatal编程技术网

启用核心数据Xcode Swift

启用核心数据Xcode Swift,swift,xcode,core-data,Swift,Xcode,Core Data,我正在尝试在我的项目中启用核心数据。由于我已经公平地完成了我的项目,我错过了在一开始启用核心数据的选项。 有谁能帮我启用它吗? 谢谢你点击你的应用目标(在左窗格顶部有你的应用名称的图标),然后进入“构建阶段”选项卡,然后在“链接二进制与库”,点击底部的小“+”,然后找到“CoreData.framework”并将其添加到你的项目中 启动另一个启用核心数据选项的新项目。将这些方法复制到当前项目中。您可以根据需要并将在项目中使用的方法逐个手动执行此操作。此外,不要忘记添加: import CoreD

我正在尝试在我的项目中启用核心数据。由于我已经公平地完成了我的项目,我错过了在一开始启用核心数据的选项。 有谁能帮我启用它吗? 谢谢你

点击你的应用目标(在左窗格顶部有你的应用名称的图标),然后进入“构建阶段”选项卡,然后在“链接二进制与库”,点击底部的小“+”,然后找到“CoreData.framework”并将其添加到你的项目中

启动另一个启用核心数据选项的新项目。将这些方法复制到当前项目中。您可以根据需要并将在项目中使用的方法逐个手动执行此操作。此外,不要忘记添加:

import CoreData

您可以直接在正在运行的项目中添加核心数据转到您的项目名称右键单击“选择新文件”并从“核心数据”部分选择数据模型,您必须在AppDelegate.swift文件中进行一些核心数据配置

在AppDelegate文件中添加此代码

import CoreData

// MARK: - Core Data stack

    lazy var applicationDocumentsDirectory: URL = {
        // The directory the application uses to store the Core Data store file. This code uses a directory named "com.purpleapps.PixBoxNew.PixBox" in the application's documents Application Support directory.
        let urls = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)
        return urls[urls.count-1]
    }()

    lazy var managedObjectModel: NSManagedObjectModel = {
        // The managed object model for the application. This property is not optional. It is a fatal error for the application not to be able to find and load its model.
        let modelURL = Bundle.main.url(forResource: "<<YourCoredatanamehere>>", withExtension: "momd")!
        return NSManagedObjectModel(contentsOf: modelURL)!
    }()

    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.appendingPathComponent("SingleViewCoreData.sqlite")
        print(url)
        var failureReason = "There was an error creating or loading the application's saved data."
        do {
            let myOptions = [NSMigratePersistentStoresAutomaticallyOption: true,
                             NSInferMappingModelAutomaticallyOption: true]
            try coordinator.addPersistentStore(ofType: NSSQLiteStoreType, configurationName: nil, at: url, options: myOptions)
        } catch {
            // Report any error we got.
            var dict = [String: AnyObject]()
            dict[NSLocalizedDescriptionKey] = "Failed to initialize the application's saved data" as AnyObject?
            dict[NSLocalizedFailureReasonErrorKey] = failureReason as AnyObject?

            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
    }()

    lazy var managedObjectContext: NSManagedObjectContext = {
        // Returns the managed object context for the application (which is already bound to the persistent store coordinator for the application.) This property is optional since there are legitimate error conditions that could cause the creation of the context to fail.
        let coordinator = self.persistentStoreCoordinator
        //UNDO
        //         var managedObjectContext = NSManagedObjectContext(concurrencyType: .privateQueueConcurrencyType)
        var managedObjectContext = NSManagedObjectContext(concurrencyType: .mainQueueConcurrencyType)
        managedObjectContext.persistentStoreCoordinator = coordinator
        return managedObjectContext
    }()

    lazy var writerManagedObjectContext: NSManagedObjectContext = {
        // Returns the managed object context for the application (which is already bound to the persistent store coordinator for the application.) This property is optional since there are legitimate error conditions that could cause the creation of the context to fail.
        // let coordinator = self.persistentStoreCoordinator
        var writerManagedObjectContext = NSManagedObjectContext(concurrencyType: .privateQueueConcurrencyType)
        // writerManagedObjectContext.persistentStoreCoordinator = coordinator

        //   [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(_mocDidSaveNotification:) name:NSManagedObjectContextDidSaveNotification object:nil];

        NotificationCenter.default.addObserver(self, selector: #selector(AppDelegate.mocDidChangeNotification), name: NSNotification.Name.NSManagedObjectContextDidSave, object: nil)
        return writerManagedObjectContext
    }()
    // MARK: - Core Data Saving support

    func mocDidChangeNotification(_ notification : Notification){
        DispatchQueue.main.async {
            self.managedObjectContext.mergeChanges(fromContextDidSave: notification)
        }
    }

    func saveContext () {
        if managedObjectContext.hasChanges {
            do {
                try managedObjectContext.save()
            } catch {
                // Replace this implementation 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.
                let nserror = error as NSError
                NSLog("Unresolved error \(nserror), \(nserror.userInfo)")
                abort()
            }
        }
    }
导入核心数据
//标记:-核心数据堆栈
lazy var applicationdocuments目录:URL={
//应用程序用于存储核心数据存储文件的目录。此代码在应用程序的文档应用程序支持目录中使用名为“com.purpleapps.PixBoxNew.PixBox”的目录。
让URL=FileManager.default.URL(对于:.documentDirectory,在:.userDomainMask中)
返回URL[url.count-1]
}()
惰性变量managedObjectModel:NSManagedObjectModel={
//应用程序的托管对象模型。此属性不是可选的。应用程序无法找到并加载其模型是一个致命错误。
让modelURL=Bundle.main.url(用于资源:“”,扩展名为“momd”)!
返回NSManagedObjectModel(contentsOf:modelURL)!
}()
lazy var persistentStoreCoordinator:NSPersistentStoreCoordinator={
//应用程序的持久存储协调器。此实现创建并返回一个协调器,并将应用程序的存储添加到该协调器中。此属性是可选的,因为存在可能导致存储创建失败的合法错误条件。
//创建协调器和存储
let coordinator=NSPersistentStoreCoordinator(managedObjectModel:self.managedObjectModel)
让url=self.applicationDocumentsDirectory.appendingPathComponent(“SingleViewCoreData.sqlite”)
打印(url)
var failureReason=“创建或加载应用程序保存的数据时出错。”
做{
让myOptions=[NSMigratePersistentStoresAutomaticalyOption:true,
NSInferMappingModelAutomaticallyOption:true]
尝试coordinator.addPersistentStore(ofType:NSSQLiteStoreType,configurationName:nil,at:url,options:myOptions)
}抓住{
//报告我们遇到的任何错误。
var dict=[String:AnyObject]()
dict[NSLocalizedDescriptionKey]=“未能将应用程序保存的数据初始化为AnyObject?”?
dict[NSLocalizedFailureReasonErrorKey]=故障原因是否为任何对象?
dict[NSUnderlyingErrorKey]=错误为NSError
让wrappedError=NSError(域:“您的错误域”,代码:9999,用户信息:dict)
//将此替换为适当处理错误的代码。
//abort()导致应用程序生成崩溃日志并终止。您不应该在装运应用程序中使用此函数,尽管它在开发过程中可能很有用。
NSLog(“未解决的错误\(wrappedError),\(wrappedError.userInfo)”)
中止
}
返回协调员
}()
惰性变量managedObjectContext:NSManagedObjectContext={
//返回应用程序的托管对象上下文(已绑定到应用程序的持久存储协调器)。此属性是可选的,因为存在可能导致上下文创建失败的合法错误条件。
let coordinator=self.persistentStoreCoordinator
//撤消
//var managedObjectContext=NSManagedObjectContext(并发类型:.privateQueueConcurrencyType)
var managedObjectContext=NSManagedObjectContext(并发类型:.mainQueueConcurrencyType)
managedObjectContext.persistentStoreCoordinator=协调器
返回managedObjectContext
}()
lazy var writerManagedObjectContext:NSManagedObjectContext={
//返回应用程序的托管对象上下文(已绑定到应用程序的持久存储协调器)。此属性是可选的,因为存在可能导致上下文创建失败的合法错误条件。
//let coordinator=self.persistentStoreCoordinator
var writerManagedObjectContext=NSManagedObjectContext(并发类型:.privateQueueConcurrencyType)
//writerManagedObjectContext.persistentStoreCoordinator=协调器
//[[NSNotificationCenter defaultCenter]添加观察者:自选择器:@selector(_mocDidSaveNotification:)名称:NSManagedObjectContextDidSaveNotification对象:nil];
NotificationCenter.default.addObserver(self,选择器:#选择器(AppDelegate.mocDidChangeNotification),名称:NSNotification.name.NSManagedObjectContextDidSave,对象:nil)
返回writerManagedObjectContext
}()
//MARK:-核心数据保存支持
func mocDidChangeNotification(通知:通知){
DispatchQueue.main.async{
self.managedObjectContext.mergeChanges(fromContextDidSave:notification)
}
}
func saveContext(){
如果managedObjectContext.hasChanges{
做{
请尝试managedObjectContext.save()
}抓住{
//将此实现替换为适当处理错误的代码。
//中止