详解iOS应用开发中Core Data数据存储的使用_IOS开发教程-查字典教程网
详解iOS应用开发中Core Data数据存储的使用
详解iOS应用开发中Core Data数据存储的使用
发布时间:2016-12-28 来源:查字典编辑
摘要:1.如果想创建一个带有coreData的程序,要在项目初始化的时候勾选中2.创建完成之后,会发现在AppDelegate里多出了几个属性,和...

1.如果想创建一个带有coreData的程序,要在项目初始化的时候勾选中

2.创建完成之后,会发现在AppDelegate里多出了几个属性,和2个方法

复制代码 代码如下:

<span>

@property (readonly, strong, nonatomic) NSManagedObjectContext *managedObjectContext;

@property (readonly, strong, nonatomic) NSManagedObjectModel *managedObjectModel;

@property (readonly, strong, nonatomic) NSPersistentStoreCoordinator *persistentStoreCoordinator;

- (void)saveContext;

- (NSURL *)applicationDocumentsDirectory;</span>

Core Data数据持久化是对SQLite的一个升级,它是ios集成的,在说Core Data之前,我们先说说在CoreData中使用的几个类。

(1)NSManagedObjectModel(被管理的对象模型)

相当于实体,不过它包含 了实体间的关系

(2)NSManagedObjectContext(被管理的对象上下文)

操作实际内容

作用:插入数据 查询 更新 删除

(3)NSPersistentStoreCoordinator(持久化存储助理)

相当于数据库的连接器

(4)NSFetchRequest(获取数据的请求)

相当于查询语句

(5)NSPredicate(相当于查询条件)

(6)NSEntityDescription(实体结构)

(7)后缀名为.xcdatamodel的包

里面的.xcdatamodel文件,用数据模型编辑器编辑

编译后为.momd或.mom文件,这就是为什么文件中没有这个东西,而我们的程序中用到这个东西而不会报错的原因。

3.如果想创建一个实体对象的话,需要点击.xcdatamodel,Add Entity,添加想要的字段

4.生成对象文件,command+n,然后选中CoreData里的NSManagerObjectSubClass进行关联,选中实体创建

5.添加数据

复制代码 代码如下:

Person *newPerson = [NSEntityDescription insertNewObjectForEntityForName:@"Person" inManagedObjectContext:self.managedObjectContext];

if (newPerson == nil){

NSLog(@"Failed to create the new person.");

return NO;

}

newPerson.firstName = paramFirstName;

newPerson.lastName = paramLastName;

newPerson.age = [NSNumber numberWithUnsignedInteger:paramAge];

NSError *savingError = nil;

if ([self.managedObjectContext save:&savingError]){

return YES;

} else {

NSLog(@"Failed to save the new person. Error = %@", savingError);

}

NSEntityDescription(实体结构)相当于表格结构

6.取出数据查询

复制代码 代码如下:

/* Create the fetch request first */

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];

/* Here is the entity whose contents we want to read */

NSEntityDescription *entity =

[NSEntityDescription

entityForName:@"Person"

inManagedObjectContext:self.managedObjectContext];

/* Tell the request that we want to read the

contents of the Person entity */

[fetchRequest setEntity:entity];

NSError *requestError = nil;

/* And execute the fetch request on the context */

NSArray *persons =

[self.managedObjectContext executeFetchRequest:fetchRequest

error:&requestError];

/* Make sure we get the array */

if ([persons count] > 0){

/* Go through the persons array one by one */

NSUInteger counter = 1;

for (Person *thisPerson in persons){

NSLog(@"Person %lu First Name = %@",

(unsigned long)counter,

thisPerson.firstName);

NSLog(@"Person %lu Last Name = %@",

(unsigned long)counter,

thisPerson.lastName);

NSLog(@"Person %lu Age = %ld",

(unsigned long)counter,

(unsigned long)[thisPerson.age unsignedIntegerValue]);

counter++;

}

} else {

NSLog(@"Could not find any Person entities in the context.");

}

7.删除数据

复制代码 代码如下:

/* Create the fetch request first */

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];

/* Here is the entity whose contents we want to read */

NSEntityDescription *entity =

[NSEntityDescription

entityForName:@"Person"

inManagedObjectContext:self.managedObjectContext];

/* Tell the request that we want to read the

contents of the Person entity */

[fetchRequest setEntity:entity];

NSError *requestError = nil;

/* And execute the fetch request on the context */

NSArray *persons =

[self.managedObjectContext executeFetchRequest:fetchRequest

error:&requestError];

if ([persons count] > 0){

/* Delete the last person in the array */

Person *lastPerson = [persons lastObject];

[self.managedObjectContext deleteObject:lastPerson];

NSError *savingError = nil;

if ([self.managedObjectContext save:&savingError]){

NSLog(@"Successfully deleted the last person in the array.");

} else {

NSLog(@"Failed to delete the last person in the array.");

}

} else {

NSLog(@"Could not find any Person entities in the context.");

}

8.排序

复制代码 代码如下:

<pre code_snippet_id="243955" snippet_file_name="blog_20140319_5_4289257" name="code">NSSortDescriptor *ageSort =

[[NSSortDescriptor alloc] initWithKey:@"age"

ascending:YES];

NSSortDescriptor *firstNameSort =

[[NSSortDescriptor alloc] initWithKey:@"firstName"

ascending:YES];

NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:

ageSort,

firstNameSort, nil nil];

fetchRequest.sortDescriptors = sortDescriptors; </pre><p></p>

<pre></pre>

<p></p>

<pms song',Arial,Helvetica,sans-serif; line-height:19.09090805053711px">

<span><span><br>

</span></span></p>

<span>注意</span><span>ascending:YES 属性决定排序顺序</span><span><span><br>

<br>

<br>

</span></span><br>

相关阅读
推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
  • 大家都在看
  • 小编推荐
  • 猜你喜欢
  • 最新IOS开发学习
    热门IOS开发学习
    编程开发子分类