Swift   发布时间:2022-03-31  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了swift语言IOS8开发战记21 Core Data2大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

        新年到了,祝大家大家羊年快乐,喜气洋洋。上一话中我们简单地介绍了一些coredata的基本知识,这一话我们通过编程来实现coredata的使用。这一话中建立的几个变量对照上一话中讲到的coredata中重要的变量,在AppDelegate中,添加如下代码: lazy var applicationDocumentsDirectory:NSURL = { let ur

新年到了,祝大家大家羊年快乐,喜气洋洋。上一话中我们简单地介绍了一些coredata的基本知识,这一话我们通过编程来实现coredata的使用。这一话中建立的几个变量对照上一话中讲到的coredata中重要的变量,在AppDelegate中,添加如下代码

lazy var applicationDocumentsDirectory:NSURL = {
        let urls = NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory,inDomains: .UserDomainMask)
        return urls[urls.count - 1] as NSURL
        }() //官方比较推荐的写法

跟我们之前接触的大多数数据库访问的语句相似,这是通过一个闭包来设置url的。
  lazy var managedObjectModel: NsmanagedObjectModel = {
        let modelUrl = NSBundle.mainBundle().URLForresource("Model",withExtension: "momd")
        return NsmanagedObjectModel(contentsOfURL: modelUrl!)!
        }()//加载model

还记得我们在coredata中定义的那个Model么,上面这段代码会加载这个Model。
lazy var persistenetStoreCoordinator:NSPersistentStoreCoordinator = {
        var coordinator: NSPersistentStoreCoordinator? = NSPersistentStoreCoordinator(managedObjectModel: self.managedObjectModel)
        let url = self.applicationDocumentsDirectory.URLByAppendingPathComponent("data.sqlite")
        var error: NSError? = nil
        var @R_626_4895@tring = "Three was an error when creaTing or loading the application's saved data"
        if coordinator?.addPersistentStoreWithType(NSsqliteStoreType,configuration: nil,URL: url,options: nil,error: &error) == nil {
            coordinator = nil
            let Dict = NSMutableDictionary()
            Dict[NSLocalizedDescriptionKey] = "@L_874_8@ to initialize the application's save data"
            Dict[NSLocalizedFailureReasonErrorKey] = @R_626_4895@tring
            Dict[NSUnderlyingErrorKey] = error
            error = NSError(domain: "YOUR_ERROR_DOMAIN",code: 9999,userInfo: Dict)
            NSLog("Unsolved error\(error),\(error.userInfo)")
            abort()//有错误直接退出
        }
        return coordinator!//没有错误就返回
        
        }()//持久化

上面这段代码定义了持久化的存储器和错误的处理方式

   lazy var managedObjectContext:NsmanagedObjectContext = {
        let coordinator = self.persistenetStoreCoordinator
        var managedObjectContext = NsmanagedObjectContext()
        managedObjectContext.persistentStoreCoordinator = coordinator
        return managedObjectContext
        
        }()//上下文
变量定义足够了之后我们来定义方法
    func saveContext(){
        if let moc = self.managedObjectContext {
            var error:NSError? = nil
            if moc.hasChanges && !moc.save(&error){
             NSLog("Unsolved error\(error),\(error.userInfo)")
                abort()
            }
        }
    
    }

上一话中说过,如果没有@L_618_15@save方法,那么我们对coredata的操作都会在内存中,而不会持久化。定义完方法之后,我们对coredata的准备都已经完成了。最后强调一点,coredata并不是数据库,它只是一个框架,协助我们进行数据库操作,它并不关心我们把数据存到哪里。此外我们只创建@L_724_3@model是不够的,需要再创建一个关联文件如下图所示:

一路点下去,后面的操作是自动关联的,生成文件如下:

大佬总结

以上是大佬教程为你收集整理的swift语言IOS8开发战记21 Core Data2全部内容,希望文章能够帮你解决swift语言IOS8开发战记21 Core Data2所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。