iOS setValue value类型与相应属性类型不同

1.通过setValue:forKey:为对象属性赋值时,属性的真正类型是由value的类型决定,,

例:

@property (nonatomic, strong) NSString  *praise;

[self setValue:@(20) forKey:@"praise"];

则praise的真正类型是NSNumber类型,,,

2.当value的类型和相应属性的类型为不同的基本数据类型时,最终数据类型由相应属性的类型决定,,(自动转换)

例:

@property (nonatomic ,assign) long      praise;

[self setValue:@(20.38294) forKey:@"praise"];

则praise的真正类型是long类型,,,20

@property (nonatomic, assign) CGFloat  praise;

[self setValue:@(20) forKey:@"praise"];

则praise的真正类型是CGFloat类型,,,20.000000

时间: 2024-10-28 15:34:30

iOS setValue value类型与相应属性类型不同的相关文章

SpringMVC类型转换器、属性编辑器

对于MVC框架,参数绑定一直觉得是很神奇很方便的一个东西,在参数绑定的过程中利用了属性编辑器.类型转换器 参数绑定流程 参数绑定:把请求中的数据,转化成指定类型的对象,交给处理请求的方法 请求进入到DisptacherServlet,卸下请求中的数据 DisptacherServlet将请求中的数据发送给Controller 获取Controller需要接收的参数类型,将参数类型和请求数据发送给DataBinder DataBinder将参数类型和请求数据再发给TypeConverter,由Ty

IOS开发语言Swift入门连载---集合类型

IOS开发语言Swift入门连载-集合类型 Swift语言提供经典的数组和字典两种集合类型来存储集合数据.数组用来按顺序存储相同类型的数据.字典虽然无序存储相同类型数据值但是需要由独有的标识符引用和寻址(就是键值对). Swift语言里的数组和字典中存储的数据值类型必须明确. 这意味着我们不能把不正确的数据类型插入其中. 同时这也说明我们完全可以对获取出的值类型非常自信. Swift 对显式类型集合的使用确保了我们的代码对工作所需要的类型非常清楚,也让我们在开发中可以早早地找到任何的类型不匹配错

QObject提供了QMetaObject元类信息(相当于RTTI和反射),信号与连接,父子关系,调试信息,属性,事件,继承关系,窗口类型,线程属性,时间器,对象名称,国际化

元类信息(相当于RTTI和反射),信号与连接,父子关系,调试信息,属性,事件,继承关系,窗口类型,线程属性,时间器,对象名称,国际化其中元类又提供了:classInfo,className,构造函数,多重祖先元类,method, property, Enumerator, Signal, Slot等等 http://doc.qt.io/qt-5/qobject.html http://doc.qt.io/qt-5/qmetaobject.html 我感觉Qt的出现,除了提供GUI以外,主要就是提

PHP.38-TP框架商城应用实例-后台15-商品属性与库存量1-不同商品(唯一属性、可选属性),属性类型

思路: 1.不同商品属于不同的类型,如:手机.服装.电脑等类型 2.不同的类型有不同的属性,其中分为唯一属性和可选属性,如服装:可选属性{尺寸:S,M,L--;颜色:白色,黑色--}唯一属性:材质 首先把类型与属性关联起来 1.建表 类型表{p39_type} drop table if exists p39_type; create table p39_type ( id mediumint unsigned not null auto_increment comment 'Id', type

自定义枚举类型的注释属性用于UI的显示

1.定义枚举类型 public enum CommStatus    {        /// <summary>        /// Udp类型        /// </summary>        [Description("Udp类型")] Udp = 0, /// <summary>        /// Udp类型        /// </summary>        [Description("Udp广播类

Java获取未知类型对象的属性

获取未知类型对象的属性通常有两种方式: 一是通过自定义注解的方式,通过获取被注解的属性从而获取属性的值,这种方式也是Spring参数注入的重要实现手段 二是通过反射获取属性的名称,通过属性名从而获取属性,这种方式在开发时是比较简便易实现的. 一.关于注解 1.自定义注解 首先定义一个@interface类型的注解接口 @Target(ElementType.FIELD) @Retention(RetentionPolicy.RUNTIME) public @interface ClassBean

java获取对象属性类型、属性名称、属性值

因为项目需要用到,于是简单封装了一些常用的操作: [java] view plaincopy /** * 根据属性名获取属性值 * */ private Object getFieldValueByName(String fieldName, Object o) { try { String firstLetter = fieldName.substring(0, 1).toUpperCase(); String getter = "get" + firstLetter + field

高程第六章--面向对象程序设计--属性类型

ES有两种属性类型:数据属性和访问器属性. 一.数据属性4个描述其行为的特性. 1:[[Configurable]]:表示能否通过delete删除属性从而重新定义属性. 2: [[Enumerable]]:表示能否通过for-in循环返回属性 3: [[Writable]]:表示能否修改属性的值 4:[[Value]]:包含这个属性的属性值 要修改属性默认的特性,必须使用ES5的defineProperty()方法 //"use strict"; var person = {}; Ob

属性类型

2)属性类型 数据属性(重要的话,在本身是true,在方法中默认是false [[Configurable]] 能否删除从而重新定义,能否修改属性的特性,能否把属性改为访问器属性 [[Enumerable]]能否for-in [[writable]]能否写 [[Value]]读写 要修改属性的默认特性,可以使用Object.defineProperty(a,b,c)分别是属性所在的对象,属性的名字,一个描叙符对象(上面的四个中的一个或者多个 var person=new Object(); Ob