首页 > 代码库 > 超简易复制Model对象(为后续备忘录设计模式博文做铺垫)
超简易复制Model对象(为后续备忘录设计模式博文做铺垫)
超简易复制Model对象(为后续备忘录设计模式博文做铺垫)
复制整个Model需要实现NSCopy协议,可以想象是非常麻烦的一件事情,今天我跟大家分享一个不需要你做任何操作的复制Model对象的方法,不过,首先你得先去下载开源代码FastCoder辅助才行。
源码如下:
NSObject+ObjectCopy.h 与 NSObject+ObjectCopy.m
//// NSObject+ObjectCopy.h// FastCoder//// Created by YouXianMing on 15/1/3.// Copyright (c) 2015年 YouXianMing. All rights reserved.//#import <Foundation/Foundation.h>@interface NSObject (ObjectCopy)/** * 复制对象 * * @return 返回复制的对象 */- (id)copyObject;@end
//// NSObject+ObjectCopy.m// FastCoder//// Created by YouXianMing on 15/1/3.// Copyright (c) 2015年 YouXianMing. All rights reserved.//#import "NSObject+ObjectCopy.h"#import "FastCoder.h"@implementation NSObject (ObjectCopy)- (id)copyObject { id object = nil; NSData *data =http://www.mamicode.com/ nil; if ((data =http://www.mamicode.com/ [FastCoder dataWithRootObject:self])) { object = [FastCoder objectWithData:data]; } return object;}@end
Model.h 与 Model.m
//// Model.h// FastCoder//// Created by YouXianMing on 15/1/3.// Copyright (c) 2015年 YouXianMing. All rights reserved.//#import <Foundation/Foundation.h>@interface Model : NSObject@property (nonatomic, strong) NSString *name; // 姓名@property (nonatomic, strong) NSNumber *age; // 年龄@property (nonatomic, strong) NSDate *birthDate; // 出身日期@property (nonatomic, strong) NSArray *subInfo; // 子信息@property (nonatomic, strong) NSDictionary *address; // 地址- (void)info;@end
//// Model.m// FastCoder//// Created by YouXianMing on 15/1/3.// Copyright (c) 2015年 YouXianMing. All rights reserved.//#import "Model.h"@implementation Model- (void)info { NSLog(@"[%@]", self); NSLog(@"name %@", self.name); NSLog(@"age %@", self.age); NSLog(@"birthDate %@", self.birthDate); NSLog(@"subInfo %@", self.subInfo); NSLog(@"address %@", self.address); NSLog(@"");}@end
控制器源码:
//// ViewController.m// http://home.cnblogs.com/u/YouXianMing///// Created by YouXianMing on 15/1/3.// Copyright (c) 2015年 YouXianMing. All rights reserved.//#import "ViewController.h"#import "NSObject+ObjectCopy.h"#import "Model.h"@interface ViewController ()@end@implementation ViewController- (void)viewDidLoad { [super viewDidLoad]; // ModelOne Model *model_one = [Model new]; model_one.name = @"YouXianMing"; model_one.age = @(27); model_one.birthDate = [NSDate date]; model_one.subInfo = @[@"iOS", @"C++"]; model_one.address = @{@"BeiJing": @"TongZhou"}; [model_one info]; // ModelTwo Model *model_two = [model_one copyObject]; model_two.name = @"QiuLiang"; model_two.age = @(28); [model_two info];}@end
核心的地方:
超简易复制Model对象(为后续备忘录设计模式博文做铺垫)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。