文档章节

数据赋值

奋斗的青春年华
 奋斗的青春年华
发布于 2016/11/10 13:37
字数 436
阅读 6
收藏 0

1 在网络请求中,获得的数据对控件进行赋值时,一定在数据的set方法中赋值,否则极易造成赋值失败,导致控件的相应地数据为空。当数据是通过网络请求得到的,赋值时,出现控件的相应数据属性为空时,很有可能是赋值时,控件还没初始化创建出来,导致赋值(=)的右侧有值,而= 的左侧为空(即控件的数据属性为空)。

2 在使用数据模型时,诸如大的模型中有一个用数组存放的字典小模型时,即存在嵌套模型时,由于在对大的模型(即小模型的上一级模型赋值时,已经对小模型进行了初始化小模型,因此在控制器或view中不能再次初始化小模型,否则将导致数据错误,导致小模型数据为空,界面无数据展示。记住,一旦模型在模型类中已经初始化,那么在控制器或view中一定不能再次赋值初始化。经典案例如下:

#import "HRBaseModel.h"

@interface ActivityRecommentModel : HRBaseModel

@property (nonatomic,assign) NSInteger ArticleID;    //文章ID

@property (nonatomic,copy) NSString *Title;    //文章标题

@property (nonatomic,copy) NSString *Image;    //文章图片URL

@property (nonatomic,copy) NSString *Products;//关联商品

@property (nonatomic,strong) NSArray *ProductList;//关联商品的LIST

@end

 

#import "ActivityRecommentModel.h"

#import "ActivityRecDetProductModel.h"

 

@implementation ActivityRecommentModel

 

- (instancetype)initWithDictionary:(NSDictionary *)dictionary

{

    self = [super initWithDictionary:dictionary];

    if (self) {

        [self setValuesForKeysWithDictionary:dictionary];

        NSArray *productList = dictionary[@"ProductList"];

        NSMutableArray *muArr = [NSMutableArray array];

        for (NSDictionary *dict in productList) {

//在模型中已经初始化了ActivityRecDetProductModel,因此在控制器或view中一定不能再次初始化,否则错误,模型初始化只能进行一次

            ActivityRecDetProductModel *productModel = [[ActivityRecDetProductModel alloc] initWithDictionary:dict];

            [muArr addObject:productModel];

        }

        _ProductList = muArr;

    }

    return self;

}

 

@end

 

© 著作权归作者所有

共有 人打赏支持
奋斗的青春年华
粉丝 1
博文 173
码字总数 103979
作品 0
浦东
私信 提问
C++ 构造函数初始化列表

一、我的问题是关于初始化C++类成员的。我见过许多这样的代码: CSomeClass::CSomeClass() { x=0; y=1; } 而在别的什么地方则写成下面的样子: CSomeClass::CSomeClass() : x(0), y(1) { } ...

geek_loser
2016/10/18
41
0
【old】博客还是需要写的哦-赋值、拷贝

1)预备知识 1.1)预备知识1--python的变量及其存储 ·python中,变量保存的是对象的引用,我们称之为"引用语义".·采用这种语义,变量需要的内存大小一致,因为变量只是保存了一个引用. 1.2)各基本...

Mx孔小发
2017/12/24
0
0
代码创建控件注意事项

1 用代码创建子控件时,一般实例化控件都是在init方法中创建,当然如果控件没有复杂的逻辑也可以直接在数据赋值的方法中创建并赋值,数据赋值在数据set方法中设置 2 设定的约束需要根据不同的...

奋斗的青春年华
2016/08/24
2
0
c++中拷贝构造函数&赋值操作符的理解

18/2/6 将具体例子改为Ch09Point类(作为指针变量使用),Ch09CopyConstructor类(作为父类,包含Ch09Point指针变量),Ch09DeprivedClass类(作为子类)。通过这三个类的相互关系,介绍c++...

乔三爷
2016/06/10
70
0
ABAP开发基础知识:7)数据类型的转换

在其它编程语言中,数据之间的转换是非常普遍的。当然,在ABAP编程中也同样涉及到数据之间的相互转换,在不同的数据对象之间赋值,系统会自动进行类型转换,转换过程遵照固定规则进行,例如将...

ken_ngai
2012/03/28
0
0

没有更多内容

加载失败,请刷新页面

加载更多

设计模式之工厂模式

本篇博文主要翻译这篇文章: https://www.journaldev.com/1392/factory-design-pattern-in-java 由于翻译水平有限,自认为许多地方翻译不恰当,欢迎各位给出宝贵的建议,建议大家去阅读原文。...

firepation
23分钟前
2
0

中国龙-扬科
26分钟前
1
0
简单谈谈vue的过渡动画

在vue中,实现过渡动画一般是下面这样: `<``transition` `name``=``"fade"``>``<``div``></``div``>``</``transition``>` 用一个transition对元素或者组件进行封装. 在过渡的时候,会......

嫣然丫丫丫
31分钟前
2
0
文件及目录处理

file_get_contents file_put_contens fopen r/r+ 只读打开,指针开头 w/w+ 写入打开,指针开头,清空文件,不存创建 a/a+ 追加打开,指针末尾,不存创建 x/x+ 创建模式打开 b 二进制打开 t 文本打开...

关元
33分钟前
1
0
如何在Angular中使用better-scroll插件

由于需要在一个固定的的高度做无限滚动,本来css的overflow-y也可以完成的,奈何安卓不是很流畅,还很生硬,就是用了第三方库better-scroll,配合angular的ng-content。angular的ng-content和...

前端攻城老湿
40分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部