CoreData的增,删,改,查

在创建工程的时候吧UserCoreData勾上,Xcode就会自动在AppDelegate里面创建CoreData所需的一些方法属性。(两个方法三个属性)

192504_sU4y_2625446.png

@property (readonly, strong, nonatomic) NSManagedObjectContext *managedObjectContext;
@property (readonly, strong, nonatomic) NSManagedObjectModel *managedObjectModel;
@property (readonly, strong, nonatomic) NSPersistentStoreCoordinator *persistentStoreCoordinator;
- (void)saveContext;
- (NSURL *)applicationDocumentsDirectory;

自动生成的东西就不细说了,直接将使用方法了。

点击CoreData数据添加保存的数据属性

193152_1oxr_2625446.png

  1. 插入数据

- (void)inserData
{
    User * newUser = [NSEntityDescription insertNewObjectForEntityForName:@"User" inManagedObjectContext:self.managedObjectContext];
    
    if (newUser != nil) {
        newUser.userName = @"Mary";
        newUser.signName = @"Hello word";
        newUser.userId = [NSNumber numberWithInt:1];
        
        //保存数据
        NSError * savingError = nil;
        if ([self.managedObjectContext save:&savingError]) {
            NSLog(@"成功");
        }else
        {
            NSLog(@"存储失败 原因:%@",savingError);
        }
    }else
    {
        NSLog(@"创建用户失败");
    }
}

2.改数据

        NSFetchRequest * fetchRequest = [[NSFetchRequest alloc]init];
        NSEntityDescription * entity = [NSEntityDescription entityForName:@"User" inManagedObjectContext:self.managedObjectContext];
        [fetchRequest setEntity:entity];
        
        NSError * requestError = nil;
        NSArray * users = [self.managedObjectContext executeFetchRequest:fetchRequest error:&requestError];
        //    NSArray * arry = [self findData];
        
        if (users.count > 0) {
            User * lastUser = users[0];
            //更新数据
            lastUser.userName = userName;
            //        lastUser.userId = [NSNumber numberWithInt:1];
            
            NSError * savingError = nil;
            if ([self.managedObjectContext save:&savingError]) {
                NSLog(@"更改成功");
            }else
            {
                NSLog(@"更失败%@",savingError);
            }
        }else
        {
            NSLog(@"没有找到用户");
        }

3.查数据

- (NSArray *)findData
{
    NSFetchRequest * fetchRequest = [[NSFetchRequest alloc]init];
    NSEntityDescription * entity = [NSEntityDescription entityForName:@"User" inManagedObjectContext:self.managedObjectContext];
    [fetchRequest setEntity:entity];
    
    //设置排序条件
    NSSortDescriptor * userNameSort = [[NSSortDescriptor alloc]initWithKey:@"userName" ascending:YES];
    NSSortDescriptor * signNameSort = [[NSSortDescriptor alloc]initWithKey:@"signName" ascending:YES];
    NSArray * sortDescriptors = @[userNameSort,signNameSort];
    [fetchRequest setSortDescriptors:sortDescriptors];
    
    //设置查询条件
    NSPredicate * userIdPde = [NSPredicate predicateWithFormat:@"SELF == 1"];
    [fetchRequest setPredicate:userIdPde];
    
    NSError * requestError = nil;
    NSArray * users = [self.managedObjectContext executeFetchRequest:fetchRequest error:&requestError];
    return users;
}

最后为了能在其他页面能修改这CoreData里面的数据,直接吧改数据写在属性的Setget里

-(void)setUserName:(NSString *)userName

ViewController.m

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
    [self getDocument];
    
}
- (void)getDocument
{
    _appDelegate = [[AppDelegate alloc]init];
    NSArray * array = [_appDelegate findData];
    NSString * userName = [NSString stringWithFormat:@"%@",[array[0]userName]];
    _userName.text = userName;
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

- (IBAction)okButton:(id)sender {
    
    _appDelegate.userName = _userName.text;
    [self getDocument];
}

便可直接修改数据了

192339_4AQW_2625446.png192339_UnoD_2625446.png

 

Demo:http://pan.baidu.com/s/1eRyZlQi

 

转载于:https://my.oschina.net/langzhouzhou1/blog/631486

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值