[第1章]数据:CoreData的简单使用

一、名词解析

新建项目时,直接勾选下图位置,自动生成一堆帮你设计好的代码。

新建项目时的窗口


1、NSManagedObjectContext

官方原文(可略过):
The managed object context (NSManagedObjectContext) is the object that your application will be interacting with the most, and therefore it is the one that is exposed to the rest of your application.

解析:Context,即“上下文”,这肯定是“CEO”,管理全局;与它打交道最多,含有很多方法。

特点:生成代码中,已经帮你设计好,直接使用即可(self.managedObjectContext!)


2、NSPersistentStoreCoordinator

官方原文(可略过):
The NSPersistentStoreCoordinator sits in the middle of the Core Data stack. The coordinator is responsible for realizing instances of entities that are defined inside of the model.

解析:协调员(参考他人翻译)

特点:已经设计好,不用手动调用。


3、NSManagedObjectModel

官方原文(可略过):An NSManagedObjectModel object describes a schema—a collection of entities (data models) that you use in your application.

解析:类比成,一个数据库(database)。

特点:已经设计好,不用手动调用。


4、NSManagedObject

官方原文(可略过):
解析:类比成,一个数据库(database)。创建的Entity实体类都是继承自它,如下图所示创建:
这里写图片描述

Entity的实体类大致如下:
这里写图片描述

特点:表的基类。使用时,作为Entity类的泛型


5、NSEntityDescription

官方原文(可略过):An entity description describes an entity (which you can think of as a table in a database).

解析:类比成,数据库(database)的表(table)。

特点:经常使用方法:func insertNewObjectForEntityForName(entityName: String, inManagedObjectContext context: NSManagedObjectContext) -> AnyObject
返回Entity的一个实例。


6、NSFetchRequest

解析:相当于查询语句。

特点:常用构造方法:NSFetchRequest(entityName: String)
返回一个查询实例。



二、使用

为一个Entity(表)创建一个数据类(即表中一条条的数据),如下:
PS: 用系统创建类直接使用会报错(xcode6.4),需要加上@objc(Author)

@objc(Author)class Author: NSManagedObject {
    @NSManaged var id: NSNumber
    @NSManaged var name: String
    @NSManaged var gender: NSNumber
}

1、插入

方法原型:class func insertNewObjectForEntityForName(entityName: String, inManagedObjectContext context: NSManagedObjectContext) -> AnyObject
参数1:Entity的名字;
参数2:上下文;
返回:Entity的一条数据实例。

插入一条数据数据,并赋值:

var author_1 = NSEntityDescription.insertNewObjectForEntityForName("Author", inManagedObjectContext: self.managedObjectContext!) as! Author
author_1.id = 001
author_1.name = "Amy"
author_1.gender = false 

// 修改过数据库之后,AppDelegate里边的方法saveContext()
self.saveContext()


2、查询

方法原型:func executeFetchRequest(request: NSFetchRequest, error: NSErrorPointer) -> [AnyObject]?
参数1:一个NSFetchRequest实例;
参数2:用于保存Error信息;
返回:参数1中,属性entity里边包含的所有数据。

var request = NSFetchRequest(entityName: "Author")
var authors = self.managedObjectContext!.executeFetchRequest(request, error: nil) as! Author

// 打印查看结果。
for author in authors {
    println(author)
}


3、修改

// 先查询
var request = NSFetchRequest(entityName: "Author")
var authors = self.managedObjectContext!.executeFetchRequest(request, error: nil) as! Author

// 再修改
for author in authors {
    if author.id == 001 {
        author.name = "Amy.K"
    }
}

// 记得保存修改。
self.saveContext()


4、删除

// 先查询
var request = NSFetchRequest(entityName: "Author")
var authors = self.managedObjectContext!.executeFetchRequest(request, error: nil) as! Author

// 再删除;
// 用“上下文”的deleteObject(object: NSManagedObject)方法。
for author in authors {
    if author.id == 001 {
        self.managedObjectContext?.deleteObject(author)
    }
}

// 记得保存修改。
self.saveContext()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值