IOS开发之coreData
2019獨角獸企業重金招聘Python工程師標準>>>
注意在使用coreData的時候,注意創建工程的時候要勾選use core Data這一個選項,然后操作如下圖:添加實體和實體類,里面和操作數據庫的步驟是一樣的。
然后點擊新建,點擊如藍色部分的新建類:
//coreData是蘋果提供的數據本地化的一種,實質還是通過數據庫存儲數據
//但是操作數據的時候不需要sql語句
//核心文件和類
//1.模型文件:(后綴是.xcdatamodeld),相當于數據庫文件
//2.實體:相當于表
//3.實體類:表存儲的對象的類
//4.上下文:關聯模型文件和實際生成的數據庫文件;
//coreData的使用步驟
//1.創建一個模型文件;(創建工程點use coredata就創建了)
//2.創建實體,相當于創建表
//3.創建實體類
//4.生成上下文:(操作上下文就相當于操作數據庫)
#import "ViewController.h"
#import "AppDelegate.h"
#import "Student.h"
@interface ViewController ()
//上下文
@property (nonatomic,strong) NSManagedObjectContext *context;
@end
@implementation ViewController
- (void)viewDidLoad {
? ? [super viewDidLoad];
? ? //插入數據
? //? [self insertData];
?? ?
? ? //數據查詢
? ? //[self selectData];
?? ?
? ? //刪除數據
? ? //[self deleteData];
?? ?
? ? //更新數據
? ? [self updataData];
? ? NSLog(@"%@",NSHomeDirectory());
?? ?
?? ?
}
#pragma mark - 更新數據
- (void)updataData{
? ? //1.查詢到需要更新的數據
? ? NSFetchRequest *fetchrequest = [[NSFetchRequest alloc]
? ? ? ? ? ? ? ? ? ? initWithEntityName:@"Student"];
?? ?
? ? //創建查詢對象
? ? NSPredicate *pre = [NSPredicate predicateWithFormat:@"score<70"];
? ? //設置查詢條件
? ? fetchrequest.predicate = pre;
? ? //查詢
? ? NSArray *array = [self.context executeFetchRequest:fetchrequest error:nil];
?? ?
?? ?
? ? //2.更新屬性
? ? for (Student *stu in array) {
?? ? ? ?
? ? ? ? stu.score = @60;
? ? ? ?
? ? }
? ?
? ? //3.保存數據庫
? ? [self.context save:nil];
?? ?
}
#pragma mark - 刪除數據
- (void)deleteData{
?? ?
? ? //1.查詢要刪除的數據
? ? NSFetchRequest *fetchrequest = [[NSFetchRequest alloc]
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? initWithEntityName:@"Student"];
? ? //創建查詢對象
? ? NSPredicate *pre = [NSPredicate predicateWithFormat:@"name = '小明'"];
? ? //設置查詢條件
? ? fetchrequest.predicate = pre;
? ? //查詢
? ? NSArray *array = [self.context executeFetchRequest:fetchrequest error:nil];
? ?
? ? //2.刪除數據
? ? for (Student *stu in array) {
?? ? ? ?
? ? ? ? [self.context deleteObject:stu];
? ? }
?? ?
?? ?
? ? //3.保存數據庫
? ? [self.context save:nil];
?? ?
?? ?
}
#pragma mark - 數據查詢
- (void)selectData{
?? ?
? ? //1.創建一個查詢對象
? ? //參數:實體名:相當于表名
? ? NSFetchRequest *fetchrequest = [NSFetchRequest fetchRequestWithEntityName:@"Student"];
? ? //2.查詢數據
? ? //返回值:查詢結果數據
? ? NSArray *array = [self.context executeFetchRequest:fetchrequest error:nil];
?? ?
? ? for (Student *stu in array) {
? ? ? ? [stu show];
? ? }
?? ?
? ? //==========按條件查詢==================
? ? //1.創建條件對象
? ? //條件:成績大于80
? ? NSPredicate *pred = [NSPredicate predicateWithFormat:@"score > 80"];
?? ?
? ? NSPredicate *pred2 = [NSPredicate predicateWithFormat:@"score > %@",@90];
?? ?
? ? NSPredicate *pred3 = [NSPredicate predicateWithFormat:@"%K > %@",@"age",@15];
?? ?
? ? //2.設置查詢對象的條件
? ? fetchrequest.predicate = pred3;
?? ?
? ? //3.查詢數據
? ? NSArray *array2 = [self.context executeFetchRequest:fetchrequest error:nil];
? ? for (Student *stu in array2) {
? ? ? ? [stu show];
? ? }
?? ?
? ? //===============對查詢結果進行排序======================
? ? //1.創建排序對象
? ? //參數1:按哪個屬性進行排序
? ? //參數2:是否升序
? ? NSSortDescriptor *desc = [NSSortDescriptor sortDescriptorWithKey:@"age" ascending:NO];
? ? NSSortDescriptor *desc1 = [NSSortDescriptor sortDescriptorWithKey:@"score" ascending:NO];
?? ?
? ? //2.設置查詢的排序
? ? fetchrequest.sortDescriptors = @[desc,desc1];
?? ?
? ? //3.查詢數據
?? NSArray *array3 = ? [self.context executeFetchRequest:fetchrequest error:nil];
? ? for (Student *stu in array3) {
? ? ? ? [stu show];
? ? }
?? ?
?? ?
?? ?
}
#pragma mark - 數據的插入
-(void)insertData{
?? ?
? ? //=============插入單條數據======================
? ? //1.通過實體創建一個學生對象
?? ?
? ? //參數1:實體名(表名)
? ? //參數2:上下文(數據庫)
? ? Student *student = [NSEntityDescription insertNewObjectForEntityForName:@"Student" inManagedObjectContext:self.context];
?? ?
? ? //2.設置學生對象的屬性
? ? student.name = @"小明";
? ? student.age = @20;
? ? student.score = @90;
?? ?
? ? //保存數據庫
? ? [self.context save:nil];
?? ?
?? ?
?? ?
? ? //========插入多條數據===========
?? ?
? ? for (int i =0 ; i<20; i++) {
? ? ? ? //1.創建對象
? ? ? ? Student *stu = [NSEntityDescription insertNewObjectForEntityForName:@"Student" inManagedObjectContext:self.context];
? ? ? ? //2.設置屬性
? ? ? ? stu.name = [NSString stringWithFormat:@"name%d",i];
? ? ? ? stu.age = [NSNumber numberWithInt:arc4random() % 10 +10];
? ? ? ? stu.score = [NSNumber numberWithFloat:arc4random() % 100];
?? ? ? ?
?? ? ? ?
? ? }
? ? //3.保存數據庫
? ? [self.context save:nil];
?? ?
}
#pragma? mark - 懶加載
- (NSManagedObjectContext *)context{
?? ?
? ? if (_context == nil) {
? ? ? ?
? ? ? ? //1.拿到當前應用程序的代理
? ? ? ? //拿到當前應用程序對象
? ? ? ? //生成上下文
? ? ? ? AppDelegate *delegate =? [UIApplication sharedApplication].delegate;
? ? ? ? _context = delegate.managedObjectContext;
?? ? ? ?
?? ? ? ?
?? ? ? ?
?? ? ? ?
? ? }
? ? return _context;
}
@end
轉載于:https://my.oschina.net/luhoney/blog/670508
總結
以上是生活随笔為你收集整理的IOS开发之coreData的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 隐秘之鱼在哪里
- 下一篇: Oozie JMS通知消息实现--根据作