CoreData 数据传输对象DTO(data transfer object)

在这里以DTO来描述,稍有欠缺,DTO的引用来源于DELPHI的remberobject (RO)三层。

是通过数据库结构生成的传输对象,即数据库类对象。

可以将DTO或类对象统一理解为内存数据操作对象即可。

在IOS中,IOS已集成好相应的工具直接生成数据库访问对象。

该例子基于我前面写好的文章来创建DTO的。

步骤:

一,在工程上右键选择新建-》选IOS中的COREDATA-》选中NSManagedObject subclass如图;

 

点击NEXT;

二,选中工程中的model文件,如图;

点击NEXT;

三,选择要生成DTO的实体,这里以前面建立好的company 和department进行演示;如图;



建立好之后将自动生成DTO类对象。


//
//  Company.h
//  coredatademo
//
//  Created by f fsh on 12-10-20.
//  Copyright (c) 2012年 __MyCompanyName__. All rights reserved.
//

#import <Foundation/Foundation.h>
#import <CoreData/CoreData.h>

@class Department;

@interface Company : NSManagedObject

@property (nonatomic, retain) NSString * name;
@property (nonatomic, retain) NSSet *dept;
@end

@interface Company (CoreDataGeneratedAccessors)

- (void)addDeptObject:(Department *)value;
- (void)removeDeptObject:(Department *)value;
- (void)addDept:(NSSet *)values;
- (void)removeDept:(NSSet *)values;
@end

在这里看到dept为一个集合,因为COMPANY和DEPARTMENT的关系是一对多关系。


//
//  Company.m
//  coredatademo
//
//  Created by f fsh on 12-10-20.
//  Copyright (c) 2012年 __MyCompanyName__. All rights reserved.
//

#import "Company.h"
#import "Department.h"


@implementation Company

@dynamic name;
@dynamic dept;

@end


//
//  Department.h
//  coredatademo
//
//  Created by f fsh on 12-10-20.
//  Copyright (c) 2012年 __MyCompanyName__. All rights reserved.
//

#import <Foundation/Foundation.h>
#import <CoreData/CoreData.h>


@interface Department : NSManagedObject

@property (nonatomic, retain) NSString * deptName;
@property (nonatomic, retain) NSManagedObject *cmpy;

@end


//
//  Department.m
//  coredatademo
//
//  Created by f fsh on 12-10-20.
//  Copyright (c) 2012年 __MyCompanyName__. All rights reserved.
//

#import "Department.h"


@implementation Department

@dynamic deptName;
@dynamic cmpy;

@end



对DTO的操作,其实在IOS中就是将NSMangedObject  对象转化为对应的DTO对象。操作上更符合面向对象。

插入数据

- (void) inserttestdata
{

   //NSManagedObject * cmpy = [NSEntityDescription insertNewObjectForEntityForName:@"Company" inManagedObjectContext:self.managedObjectContext];
   // cmpy.name = @"accesstor";//不使用DTO对象的操作。


    Company *cmpy  = [NSEntityDescription insertNewObjectForEntityForName:@"Company" inManagedObjectContext:self.managedObjectContext];
    cmpy.name = @"accesstor"; //使用DTO对象进行处理。
    
    Department *deptment = [NSEntityDescription insertNewObjectForEntityForName:@"Department" inManagedObjectContext:self.managedObjectContext];

    deptment.deptName = @"department in company";

    [cmpy addDeptObject:deptment];
    [self.managedObjectContext save:nil];
}

查询数据

- (void) querytestData
{
    NSManagedObjectContext *context = [self managedObjectContext];
    NSFetchRequest *fetchreq = [[[NSFetchRequest alloc]init] autorelease];
    NSEntityDescription *entity = [NSEntityDescription entityForName:@"Company" inManagedObjectContext:context];
    
    [fetchreq setEntity:entity];
    NSError *err;
    NSArray *fetchedObjects = [context executeFetchRequest:fetchreq error:&err];
    
    for (Company *company in fetchedObjects)
    {
        NSLog(@"company name is:%@",company.name);
        for (Department * dp in company.dept) { // 遍历子表数据。
            NSLog(@"depart name is:%@",dp.deptName);
        }

    }
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

边缘998

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值