iOS CoreData简单封装

来源:互联网 发布:小额贷款业务软件 编辑:程序博客网 时间:2024/04/30 04:13
引入框架   

#import <CoreData/CoreData.h>


。h

#import <Foundation/Foundation.h>

#import <CoreData/CoreData.h>

@interface YBCoreDataTool : NSObject


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

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

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


- (void)saveContext;

- (NSURL *)applicationDocumentsDirectory;

//

-(void)add:(NSArray *)data;

//删除全部数据

-(void)deleteData;

//

-(NSArray *)fetch;


。m

#import "YBCoreDataTool.h"

#import "UserInfo.h"

#import "YBGetUsersInfoItemInfo.h"//最后解析的

static NSString *Entityname =@"UserInfo";

@implementation YBCoreDataTool

@synthesize managedObjectContext =_managedObjectContext;

@synthesize managedObjectModel =_managedObjectModel;

@synthesize persistentStoreCoordinator =_persistentStoreCoordinator;

//请求数据后,传入参数,添加数据

-(void)add:(NSArray *)data{

    //插入

    for (YBGetUsersInfoItemInfo *infoDatain data) {

        UserInfo *info =[NSEntityDescriptioninsertNewObjectForEntityForName:EntitynameinManagedObjectContext:self.managedObjectContext];

        info.groupDesc = infoData.GroupDesc;

        info.memstatus = infoData.Memstatus;

        info.nickname  = infoData.Nickname;

        info.userId    = [NSStringstringWithFormat:@"%@",infoData.UserId];

        info.phone     = infoData.Phone;

        info.userPhoto = infoData.UserPhoto;

        NSError *error =nil;

        [self.managedObjectContextsave:&error];

        if (error) {

            [NSExceptionraise:@"保存错误"format:@"%@", [errorlocalizedDescription]];

        }


    }

    

  


}


//删除

-(void)deleteData

{

    NSManagedObjectContext *context =[selfmanagedObjectContext];

    NSEntityDescription *entity = [NSEntityDescriptionentityForName:EntitynameinManagedObjectContext:context];

    

    NSFetchRequest *request = [[NSFetchRequestalloc] init];

//    [request setIncludesPropertyValues:NO];

    [request setEntity:entity];

    NSError *error =nil;

    NSArray *datas = [contextexecuteFetchRequest:requesterror:&error];

    if (!error && datas && [datascount])

    {

        for (NSManagedObject *objin datas)

        {

            [context deleteObject:obj];

        }

        if (![contextsave:&error])

        {

            NSLog(@"error:%@",error);

        }

    }

}


//根据id获取头像和昵称

-(NSArray *)fetch{

  

    NSManagedObjectContext *context =[selfmanagedObjectContext];

    

    // 限定查询结果的数量

    //setFetchLimit

    // 查询的偏移量

    //setFetchOffset

    

    NSFetchRequest *fetchRequest = [[NSFetchRequestalloc] init];

    

//    [fetchRequest setFetchLimit:pageSize];

//    [fetchRequest setFetchOffset:currentPage];

    

    NSEntityDescription *entity = [NSEntityDescriptionentityForName:@"UserInfo"inManagedObjectContext:context];

    [fetchRequest setEntity:entity];

    NSError *error;

    NSArray *fetchedObjects = [contextexecuteFetchRequest:fetchRequesterror:&error];

    NSMutableArray *resultArray = [NSMutableArrayarray];

    

    for (UserInfo *infoin fetchedObjects) {

        NSLog(@"%@", info.phone);

        NSLog(@"%@", info.nickname);

        NSLog(@"%@",info.userPhoto);

        NSLog(@"%@",info.userId);

        

        

        YBGetUsersInfoItemInfo *infoData =[[YBGetUsersInfoItemInfoalloc]init];

        infoData.GroupDesc=info.groupDesc;

        infoData.Memstatus=info.memstatus;

        infoData.Nickname =info.nickname;

        infoData.UserId   =info.userId;

        infoData.Phone    =info.phone;

        infoData.UserPhoto=info.userPhoto;

        [resultArray addObject:infoData];

    }

    return resultArray;


}


#pragma mark ---CoreData

- (void)saveContext

{

    NSError *error =nil;

    NSManagedObjectContext *managedObjectContext =self.managedObjectContext;

    if (managedObjectContext !=nil) {

        if ([managedObjectContexthasChanges] && ![managedObjectContextsave:&error]) {

            NSLog(@"Unresolved error %@, %@", error, [erroruserInfo]);

            abort();

        }

    }

}


#pragma mark - Core Data stack


// Returns the managed object context for the application.

// If the context doesn't already exist, it is created and bound to the persistent store coordinator for the application.

- (NSManagedObjectContext *)managedObjectContext

{

    if (_managedObjectContext !=nil) {

        return_managedObjectContext;

    }

    

    NSPersistentStoreCoordinator *coordinator = [selfpersistentStoreCoordinator];

    if (coordinator !=nil) {

        _managedObjectContext = [[NSManagedObjectContextalloc] init];

        [_managedObjectContextsetPersistentStoreCoordinator:coordinator];

    }

    return_managedObjectContext;

}


// Returns the managed object model for the application.

// If the model doesn't already exist, it is created from the application's model.

- (NSManagedObjectModel *)managedObjectModel

{

    if (_managedObjectModel !=nil) {

        return_managedObjectModel;

    }

    NSURL *modelURL = [[NSBundlemainBundle] URLForResource:@"UserInfo"withExtension:@"momd"];

    _managedObjectModel = [[NSManagedObjectModelalloc] initWithContentsOfURL:modelURL];

    return_managedObjectModel;

}


// Returns the persistent store coordinator for the application.

// If the coordinator doesn't already exist, it is created and the application's store added to it.

- (NSPersistentStoreCoordinator *)persistentStoreCoordinator

{

    if (_persistentStoreCoordinator !=nil) {

        return_persistentStoreCoordinator;

    }

    

    NSURL *storeURL = [[selfapplicationDocumentsDirectory]URLByAppendingPathComponent:@"UserInfo.sqlite"];

    

    NSError *error =nil;

    _persistentStoreCoordinator = [[NSPersistentStoreCoordinatoralloc] initWithManagedObjectModel:[selfmanagedObjectModel]];

    if (![_persistentStoreCoordinatoraddPersistentStoreWithType:NSSQLiteStoreTypeconfiguration:nilURL:storeURL options:nilerror:&error]) {

        NSLog(@"Unresolved error %@, %@", error, [erroruserInfo]);

        abort();

    }

    

    return_persistentStoreCoordinator;

}


#pragma mark - Application's Documents directory


// Returns the URL to the application's Documents directory.获取Documents路径

- (NSURL *)applicationDocumentsDirectory

{

    return [[[NSFileManagerdefaultManager] URLsForDirectory:NSDocumentDirectoryinDomains:NSUserDomainMask]lastObject];

}


@end





0 0
原创粉丝点击