Core Data 多表连接及查询

本文介绍了如何使用CoreData在iOS应用中管理学生信息及分数,包括创建表、添加记录和查询数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一:先建议两张表

  1. Person,Score 分别代表,学生表,分数表
  2. 在 Person的Relationships里面建立关系,指向分数score

二:coreData生成的两个表:

     Person

    

@class Score;

@interface Person : NSManagedObject

@property (nonatomic, retain) NSString * address;
@property (nonatomic, retain) NSNumber * age;
@property (nonatomic, retain) NSString * name;
@property (nonatomic, retain) Score *score;

@end
View Code

  Score

@interface Score : NSManagedObject

@property (nonatomic, retain) NSNumber * dotNet;
@property (nonatomic, retain) NSNumber * java;
@property (nonatomic, retain) NSNumber * php;

@end
View Code

三:添加记录查询记录代码

- (void)addTheRowData
{
    Person *person = [NSEntityDescription insertNewObjectForEntityForName:@"Person" inManagedObjectContext:self.appDelegate.managedObjectContext];
    person.name = @"李四";
    person.age = [NSNumber numberWithInt:20];
    person.address = @"中国济南";
    
    Score *score = [NSEntityDescription insertNewObjectForEntityForName:@"Score" inManagedObjectContext:self.appDelegate.managedObjectContext];
    score.dotNet = [NSNumber numberWithFloat:70.77];
    score.php = [NSNumber numberWithFloat:80.88];
    score.java = [NSNumber numberWithFloat:90.99];
    
    person.score = score;
    //score.person = person;
    
    
    [self.appDelegate saveContext];
    
}

- (void)showTheTableData
{
    NSFetchRequest *fetchRequest = [[NSFetchRequest alloc]initWithEntityName:@"Person"];
    NSError *error;
    NSArray *fetchedObjects = [self.appDelegate.managedObjectContext executeFetchRequest:fetchRequest error:&error];
    for (Person *info in fetchedObjects) {
        //Score *score = info.score;
        NSLog(@"name:%@ age:%@ address:%@ --- dotNet:%@ java:%@ php:%@", info.name,info.age,info.address,info.score.dotNet,info.score.java,info.score.php);
    }
    
    
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值