在前面说了Core Data的单表操作,下面来说一下多表操作
首先来说一下表
新闻表(News)
新闻分类表(NewsSort)
新闻评论表(NewsComment)
新闻编辑表(NewsEditor)
职位表(Position)
薪水表(Salary)
表直接的关系描述:
新闻分类与新闻之间的关系是1 V N(一对多的关系)
新闻与新闻评论之间的关系是1 V N(一对多的关系)
新闻编辑与新闻之间的关系是1 V N(一对多的关系)
职位与新闻编辑之间的关系是1 V N(一对多的关系)
首先来说一下表
新闻表(News)
新闻分类表(NewsSort)
新闻评论表(NewsComment)
新闻编辑表(NewsEditor)
职位表(Position)
薪水表(Salary)
表直接的关系描述:
新闻分类与新闻之间的关系是1 V N(一对多的关系)
新闻与新闻评论之间的关系是1 V N(一对多的关系)
新闻编辑与新闻之间的关系是1 V N(一对多的关系)
职位与新闻编辑之间的关系是1 V N(一对多的关系)
职位与薪水之间的关系是 1 V 1(一对一的关系)
下面来创建表,创建完成以后如下图:
下面创建表与表之间的关系
新闻分类与新闻直接的关系 1 V N
新闻编辑与新闻之间的关系 1 V N
新闻与新闻评论之间的关系 1 V N
介绍完了各个表直接的关系,它们之间的关系图如下 :
接下来,我们创建类,点击File->New->File,选择NSManagedObject subClass,点击Next,然后勾选所有的entities,如下图:
然后我们初始化数据,代码如下:
-(void)SaveData{
NSManagedObjectContext *context = [self managedObjectContext];
NewsSort *newssort =[NSEntityDescription insertNewObjectForEntityForName:NEWSSORT inManagedObjectContext:context];
newssort.newssortid =[NSNumber numberWithInt:1];
newssort.newssortname = @"国内新闻";
NewsEditor *newseditor =[NSEntityDescription insertNewObjectForEntityForName:NEWSEDITOR inManagedObjectContext:context];
newseditor.editorname = @"Jack";
newseditor.editortel = @"62359633";
newseditor.newseditorno = @"1";
NewsEditor *newseditor1 =[NSEntityDescription insertNewObjectForEntityForName:NEWSEDITOR inManagedObjectContext:context];
newseditor1.editorname = @"robbin";
newseditor1.editortel = @"68432696";
newseditor1.newseditorno = @"2";
NewsComment *newscomment =[NSEntityDescription insertNewObjectForEntityForName:NEWSCOMMENT inManagedObjectContext:context];
newscomment.commentid =[NSNumber numberWithInt:1];
newscomment.commentcontent =@"看过了";
newscomment.commentdate =[NSDate date];
NewsComment *newscomment1 =[NSEntityDescription insertNewObjectForEntityForName:NEWSCOMMENT inManagedObjectContext:context];
newscomment1.commentid =[NSNumber numberWithInt:2];
newscomment1.commentcontent =@"写的不错";
newscomment1.commentdate =[NSDate dateWithTimeIntervalSinceNow:-10];
News *news = [NSEntityDescription insertNewObjectForEntityForName:NEWS inManagedObjectContext:context];
news.newsid =[NSNumber numberWithInt:1];
news.newstitle =@"财经新闻";
news.newscontent = @"央行降息";
news.newsviewcount =[NSNumber numberWithInt:1];
news.news_newseditor =newseditor;
news.newsdate =[NSDate date];
news.news_newssort = newssort;
news.news_newscomment =[NSSet setWithObjects:newscomment,newscomment1, nil];
Position *position =[NSEntityDescription insertNewObjectForEntityForName:POSITION inManagedObjectContext:context];
position.positionno = @"11";
position.positionname = @"Level 1";
Position *position1 =[NSEntityDescription insertNewObjectForEntityForName:POSITION inManagedObjectContext:context];
position1.positionno = @"22";
position1.positionname = @"Level 2";
newseditor.newseditor_position = position;
newseditor1.newseditor_position = position1;
Salary *salary =[NSEntityDescription insertNewObjectForEntityForName:SALARY inManagedObjectContext:context];
salary.sy_no = @"1";
salary.sy_level =[NSNumber numberWithInt:1];
salary.sy_scale =[NSNumber numberWithDouble:2.0];
salary.salary_position = position;
Salary *salary1 =[NSEntityDescription insertNewObjectForEntityForName:SALARY inManagedObjectContext:context];
salary1.sy_no = @"2";
salary1.sy_level =[NSNumber numberWithInt:2];
salary1.sy_scale =[NSNumber numberWithDouble:4.0];
salary1.salary_position = position1;
NSError *error = nil;
if([context save:&error]){
NSLog(@"保存数据成功");
}else{
NSLog(@"保存数据成功");
}
}
查询新闻,代码如下:
-(void)ViewNews{
NSManagedObjectContext *context =[self managedObjectContext];
NSEntityDescription *entity =[NSEntityDescription entityForName:NEWS inManagedObjectContext:context];
//NSPredicate *predicate =[NSPredicate predicateWithFormat:@""];
NSFetchRequest *fetchRequest =[[NSFetchRequest alloc] init];
[fetchRequest setEntity:entity];
NSArray *array =[context executeFetchRequest:fetchRequest error:nil];
for(News *news in array){
news.newsviewcount =[NSNumber numberWithInt:[news.newsviewcount intValue]+1];
if([context save:nil]){
NSLog(@"查询新闻");
}else{
NSLog(@"查询新闻失败");
}
}
}
添加新闻,代码如下:
-(void)AddNews{
NSManagedObjectContext *context =[self managedObjectContext];
News *news =[NSEntityDescription insertNewObjectForEntityForName:NEWS inManagedObjectContext:context];
news.newsid =[NSNumber numberWithInt:2];
news.newstitle =@"对话创业者";
news.newsdate =[NSDate date];
news.newsviewcount =[NSNumber numberWithInt:0];
news.newscontent = @"什么时候融资以及占多少股份";
NSEntityDescription *newssortentity =[NSEntityDescription entityForName:NEWSSORT inManagedObjectContext:context];
NSFetchRequest *fecthRequest =[[NSFetchRequest alloc] init];
[fecthRequest setEntity:newssortentity];
NSArray *arr = [context executeFetchRequest:fecthRequest error:nil];
if([arr count]>0){
news.news_newssort = [arr objectAtIndex:0];
}
NSEntityDescription *newseditorentity =[NSEntityDescription entityForName:NEWSEDITOR inManagedObjectContext:context];
NSFetchRequest *editorFetchRequest =[[NSFetchRequest alloc] init];
[editorFetchRequest setEntity:newseditorentity];
NSArray *editorArr =[context executeFetchRequest:editorFetchRequest error:nil];
if([editorArr count]>0){
news.news_newseditor = [editorArr objectAtIndex:0];
}
if([context save:nil]){
NSLog(@"添加新闻成功");
}else{
NSLog(@"添加新闻失败");
}
}
添加评论,代码如下:
-(void)AddComment{
NSManagedObjectContext *context =[self managedObjectContext];
NSEntityDescription *entity =[NSEntityDescription entityForName:NEWS inManagedObjectContext:context];
//NSPredicate *predicate =[NSPredicate predicateWithFormat:@""];
NSFetchRequest *fetchRequest =[[NSFetchRequest alloc] init];
[fetchRequest setEntity:entity];
NSArray *array =[context executeFetchRequest:fetchRequest error:nil];
for(News *news in array){
NewsComment *newscomment = [NSEntityDescription insertNewObjectForEntityForName:NEWSCOMMENT inManagedObjectContext:context];
newscomment.commentid =[NSNumber numberWithInt:3];
newscomment.newscomment_news = news;
newscomment.commentcontent = @"添加了新的新闻评论";
newscomment.commentdate =[NSDate date];
if([context save:nil]){
NSLog(@"添加新闻评论");
}else{
NSLog(@"添加新闻评论失败");
}
}
}