在创建工程的时候吧UserCoreData勾上,Xcode就会自动在AppDelegate里面创建CoreData所需的一些方法属性。(两个方法三个属性)
@property (readonly, strong, nonatomic) NSManagedObjectContext *managedObjectContext;
@property (readonly, strong, nonatomic) NSManagedObjectModel *managedObjectModel;
@property (readonly, strong, nonatomic) NSPersistentStoreCoordinator *persistentStoreCoordinator;
- (void)saveContext;
- (NSURL *)applicationDocumentsDirectory;
自动生成的东西就不细说了,直接将使用方法了。
点击CoreData数据添加保存的数据属性
-
插入数据
- (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];
}
便可直接修改数据了
Demo:http://pan.baidu.com/s/1eRyZlQi