CoreData 的基本原理

CoreData

CoreDataStack.swift

import UIKit
import CoreData

class CoreDataStack: NSObject {
    
    // MARK: - Properties(属性)
    let context: NSManagedObjectContext
    let coordinator: NSPersistentStoreCoordinator
    let model: NSManagedObjectModel
    let store: NSPersistentStore?
    
    // MARK: - Singleton(单例)
    static func defaultStack() -> CoreDataStack {
        return instance 
    }
    
    private static let instance = CoreDataStack()
    
    private override init() {
        // 构建托管对象模型
        let bundle = NSBundle.mainBundle()
        let modelURL = bundle.URLForResource("FileName", withExtension: "momd")!
        model = NSManagedObjectModel(contentsOfURL: modelURL)!
        
        // 构建持久化存储助理
        coordinator = NSPersistentStoreCoordinator(managedObjectModel: model)
        
        // 构建托管对象上下文,并且将助理与上下文连接
        context = NSManagedObjectContext(concurrencyType: .MainQueueConcurrencyType)
        context.persistentStoreCoordinator = coordinator
        
        // 构建持久化存储
        let manager = NSFileManager.defaultManager()
        let urls = manager.URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask)
        let documentsURL = urls.first!
        let storeURL = documentsURL.URLByAppendingPathComponent("FileName")
        
        store = try! coordinator.addPersistentStoreWithType(NSSQLiteStoreType, configuration: nil, URL: storeURL, options: nil)
     }
    
    // MARK: - Function
    func saveContext() {
        if context.hasChanges {
            do {
                try context.save()
            } catch {
                print("Save failed...")
            }
        }
    }
}

手动设置时候,别忘记了在程序终止时候调用保存数据等

func applicationWillTerminate(application: UIApplication) {
    CoreDataStack.defaultStack().saveContext()
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,010评论 19 139
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,259评论 4 61
  • 第十六章,零八奥运 到了零八年,发生了一件大事,那就是北京奥运会。而我也报名了奥运志愿者。我被分在了老山自行车场馆...
    郭磊guolei阅读 142评论 0 0
  • 庭前池畔杏园边,又到花开月正圆。 此景杳生相思意,与君千里共婵娟。 (平水韵下平一先)
    Odette伊菲阅读 876评论 4 14
  • 几个需要注意的地方:1.phantomjs的路径要设置好,当然,用有头的浏览器也可以,如果你不嫌麻烦的话。2本程序...
    鸭梨山大哎阅读 4,093评论 0 3