swift语言IOS8开发战记21 Core Data2

简介:         新年到了,祝大家大家羊年快乐,喜气洋洋。上一话中我们简单地介绍了一些coredata的基本知识,这一话我们通过编程来实现coredata的使用。

        新年到了,祝大家大家羊年快乐,喜气洋洋。上一话中我们简单地介绍了一些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 failureString = "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] = "Failed to initialize the application's save data"
            dict[NSLocalizedFailureReasonErrorKey] = failureString
            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()
            }
        }
    
    }

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

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




目录
相关文章
|
16天前
|
机器学习/深度学习 TensorFlow Swift
Swift语言适合多个领域的开发
Swift语言适合多个领域的开发
47 9
|
16天前
|
安全 编译器 Swift
Swift开发
Swift开发
34 9
|
12天前
|
安全 Swift iOS开发
Swift 与 UIKit 在 iOS 应用界面开发中的关键技术和实践方法
本文深入探讨了 Swift 与 UIKit 在 iOS 应用界面开发中的关键技术和实践方法。Swift 以其简洁、高效和类型安全的特点,结合 UIKit 丰富的组件和功能,为开发者提供了强大的工具。文章从 Swift 的语法优势、类型安全、编程模型以及与 UIKit 的集成,到 UIKit 的主要组件和功能,再到构建界面的实践技巧和实际案例分析,全面介绍了如何利用这些技术创建高质量的用户界面。
21 2
|
17天前
|
机器学习/深度学习 人工智能 移动开发
Swift语言作为苹果公司推出的现代编程语言
Swift语言作为苹果公司推出的现代编程语言
29 8
|
19天前
|
安全 数据处理 Swift
深入探索iOS开发中的Swift语言特性
本文旨在为开发者提供对Swift语言在iOS平台开发的深度理解,涵盖从基础语法到高级特性的全面分析。通过具体案例和代码示例,揭示Swift如何简化编程过程、提高代码效率,并促进iOS应用的创新。文章不仅适合初学者作为入门指南,也适合有经验的开发者深化对Swift语言的认识。
39 9
|
17天前
|
机器学习/深度学习 安全 数据挖掘
Swift语言的应用场景非常广泛
Swift语言的应用场景非常广泛
23 4
|
17天前
|
安全 Swift iOS开发
Swift语言
Swift语言
24 4
|
28天前
|
Swift iOS开发 UED
如何使用Swift和UIKit在iOS应用中实现自定义按钮动画
本文通过一个具体案例,介绍如何使用Swift和UIKit在iOS应用中实现自定义按钮动画。当用户点击按钮时,按钮将从圆形变为椭圆形,颜色从蓝色渐变到绿色;释放按钮时,动画以相反方式恢复。通过UIView的动画方法和弹簧动画效果,实现平滑自然的过渡。
50 1
|
1月前
|
安全 API Swift
探索iOS开发中的Swift语言之美
【10月更文挑战第23天】在数字时代的浪潮中,iOS开发如同一艘航船,而Swift语言则是推动这艘船前进的风帆。本文将带你领略Swift的独特魅力,从语法到设计哲学,再到实际应用案例,我们将一步步深入这个现代编程语言的世界。你将发现,Swift不仅仅是一种编程语言,它是苹果生态系统中的一个创新工具,它让iOS开发变得更加高效、安全和有趣。让我们一起启航,探索Swift的奥秘,感受编程的乐趣。