首页 > 其他 > 详细

coreData的学习记录

时间:2014-03-19 10:00:35      阅读:438      评论:0      收藏:0      [点我收藏+]

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


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



@property (readonly, strong, nonatomic) NSManagedObjectContext *managedObjectContext;
@property (readonly, strong, nonatomic) NSManagedObjectModel *managedObjectModel;
@property (readonly, strong, nonatomic) NSPersistentStoreCoordinator *persistentStoreCoordinator;

- (void)saveContext;
- (NSURL *)applicationDocumentsDirectory;

managedObjectContext (被管理的数据上下文)操作实际内容(操作持久层)作用:插入数据,查询数据,删除数据

NSManagedObjectModel(被管理的数据模型)数据库所有表格或数据结构,包含各实体的定义信息 作用:添加实体的属性,建立属性之间的关系操作方法:视图编辑器,或代码

NSPersistentStoreCoordinator(持久化存储助理)相当于数据库的连接器 作用:设置数据存储的名字,位置,存储方式,和存储时机

方法saveContext表示:保存数据到持久层(数据库)

方法applicationDocumentsDirectory表示:应用程序沙箱下的Documents目录路径


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

bubuko.com,布布扣bubuko.com,布布扣


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


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.排序

NSSortDescriptor *ageSort = 
[[NSSortDescriptor alloc] initWithKey:@"age" 
ascending:YES]; 
NSSortDescriptor *firstNameSort = 
[[NSSortDescriptor alloc] initWithKey:@"firstName" 
ascending:YES]; 
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects: 
ageSort, 
firstNameSort, nil]; 
fetchRequest.sortDescriptors = sortDescriptors; 



注意ascending:YES 属性决定排序顺序



coreData的学习记录,布布扣,bubuko.com

coreData的学习记录

原文:http://blog.csdn.net/ioswyl88219/article/details/21485273

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!