美文网首页
数据拷贝问题

数据拷贝问题

作者: 野咪咕 | 来源:发表于2021-08-04 14:05 被阅读0次

1,模型model 拷贝。遵循NSCopying 协议

实现- (id)copyWithZone:(NSZone*)zone  方法

事例:

@interface LLJAdultEdu_basicInfor_list_Model : NSObject <NSCopying>

@property(nonatomic,strong)NSString *event_info_one_desc;

@property(nonatomic,strong)NSString *name;

@property(nonatomic,strong)NSString *name_cn;

@end


@implementation LLJAdultEdu_basicInfor_list_Model

- (id)copyWithZone:(NSZone *)zone {

    LLJAdultEdu_basicInfor_list_Model *model = [[self class] allocWithZone:zone];

    model.event_info_one_desc = [_event_info_one_desc copy];

    model.name = [_name copy];

    model.name_cn = [_name_cn copy];

   return model;

   }

@end


2,数组包含数组,数组下的某一条数组的拷贝


//解析后台数据

   LLJAdultEdu_basicInforModel * inforModel = [LLJAdultEdu_basicInforModel mj_objectWithKeyValues:obj[@"data"][@"list"]];

self.inforModel = inforModel;          


@interface LLJAdultEdu_basicInforModel : NSObject

//配置model  jl_dataArray 是数据key

@property(nonatomic,strong)NSMutableArray *jl_dataArray;

@end


@implementation LLJAdultEdu_basicInforModel

+(NSDictionary *)mj_objectClassInArray{

        return @{@"jl_dataArray" : @"LLJAdultEdu_basicInfor_list_Model"};

}


- (NSMutableArray *)jl_dataArray{

       if (!_jl_dataArray) {

            _jl_dataArray = [[NSMutableArray alloc] init];

    }

       return _jl_dataArray;

}


@end


//单条数据模型 LLJAdultEdu_basicInfor_list_Model

@interface LLJAdultEdu_basicInfor_list_Model : NSObject 

@property(nonatomic,strong)NSString *event_info_one_desc;

@property(nonatomic,strong)NSString *name;

@property(nonatomic,strong)NSString *name_cn;

@end

@implementation LLJAdultEdu_basicInfor_list_Model

- (id)copyWithZone:(NSZone *)zone {

 LLJAdultEdu_basicInfor_list_Model *model = [[self classallocWithZone:zone];

    model.event_info_one_desc = [_event_info_one_desc copy];

    model.name = [_name copy];

    model.name_cn = [_name_cn copy];

   return model;

   }

@end


目的:

self.inforModel.jl_dataArray 数组下包含一个数组,单个数组下是一条一条LLJAdultEdu_basicInfor_list_Model

现在想在self.inforModel.jl_dataArray 第0个位置拷贝一个数据,添加到self.inforModel.jl_dataArray里面

遇到问题 :

如果直接取出第0个数据,然后拷贝,是不行的。如果输入框的内容改变,数据会错乱。猜测是因为只拷贝了数组,而没有拷贝数组里面单条的model 

NSMutableArray * dataarray =self.inforModel.jl_dataArray[0];

 [self.inforModel.jl_dataArray addObject:dataarray.copy];


解决办法:

 NSMutableArray * dataarray = [[NSMutableArray alloc] init];

             //取出第0个数据

                        dataarray =self.inforModel.jl_dataArray[0];

                        //新创建一个可变数组

                        NSMutableArray * copy_data = [[NSMutableArray alloc] init];

                       //遍历第0个数据

                        for (LLJAdultEdu_basicInfor_list_Model * jianli_model in dataarray) {

                            //jianli_model 模型拷贝,添加到新数组当中

                            [copy_dataaddObject:jianli_model.copy];

                        }

                       

                     //新生成的数组添加到数据中

                           [self.inforModel.jl_dataArray addObject:copy_data];

                        

相关文章

  • 数据拷贝问题

    1,模型model 拷贝。遵循NSCopying 协议 实现- (id)copyWithZone:(NSZone*...

  • 深拷贝&浅拷贝

    数据保存到对象以后会涉及到拷贝的问题,而数据保存的格式多样,这就涉及到了深拷贝和浅拷贝的问题。产生的原因: 用以上...

  • web 前端 h5 学习记录

    1、深拷贝 JSON.parse(JSON.stringify(data)) 深拷贝可以解决数据改变却不渲染的问题...

  • IOS 数据源同步问题方案

    目的 解决UI刷新错乱的问题 解决方案 1.并发访问 数据拷贝 2.串行访问 并发访问 数据拷贝 也就是说 数据拷...

  • 深入四种深拷贝方式

    最简单的深拷贝 深拷贝的问题其实可以分解成两个问题,浅拷贝+递归,什么意思呢?假设我们有如下数据 只需稍加改动上面...

  • 拷贝文件时,做完MD5校验,异常断电导致文件拷贝失败

    问题 拷贝数据库文件到指定目录下,拷贝完成后,并做了MD5校验,此时断电,重启车机,发现文件拷贝失败。 以下是拷贝...

  • JS如何实现深度拷贝(克隆)

    深拷贝(深度克隆)的特点:拷贝的时候生成新数据,修改拷贝以后的数据不会影响原数据。拷贝的数据里如果有对象或者数组,...

  • 深拷贝和浅拷贝

    概念 浅拷贝:只拷贝最外面一层的数据;更深层次的对象,只拷贝引用。 深拷贝:拷贝多层数据;每一层级别的数据都会拷贝...

  • 11、python常用知识点

    基本数据类型 列表:list list.copy() 涉及到python的拷贝问题,这是python的浅拷贝。那么...

  • Java深拷贝和浅拷贝

    定义 浅拷贝 基本数据类型 拷贝数值 引用类型 拷贝对象引用 深拷贝 基本数据类型 拷贝数值 引用类型 拷贝引用所...

网友评论

      本文标题:数据拷贝问题

      本文链接:https://www.haomeiwen.com/subject/qyruvltx.html