Objective-C KVC 自动转换类型研究

本文探讨了Objective-C中KVC(Key-Value Coding)机制自动进行类型转换的规律。通过实例演示了不同类型属性间的转换过程及限制条件,如字符串到数值的转换、布尔值的特殊判断等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

## Objective-C KVC 自动转换类型研究

apple很厚道,kvc的时候帮我们做了一些类型转换,规律贴出来,给大伙参考参考


@interface Entity : NSObject

@property (nonatomic, copy) NSString *str;

@property (nonatomic, assign) int i1;
@property (nonatomic, assign) int i2;
@property (nonatomic, assign) int i3;

@property (nonatomic, assign) float f1;

@property (nonatomic, strong) NSNumber *num;

@property (nonatomic, assign) BOOL b1;
@property (nonatomic, assign) BOOL b2;
@property (nonatomic, assign) BOOL b3;

@property (nonatomic, strong) NSDate *date1;

@property (nonatomic, assign) NSTimeInterval t1;

@end

	// 数值的字串可以转成数值类型
    [obj setValue:@"2.4" forKey:@"i1"];
    // 非数值的字串不认识
    [obj setValue:@"a" forKey:@"i2"];
    // 只认识特殊符号以前的数
    [obj setValue:@"2014 10-24" forKey:@"i3"];
    
    // 这个转换过去是NSNumber类型
    [obj setValue:@1 forKey:@"str"];
    [obj setValue:@1.23 forKey:@"f1"];
    
    // 转去还是NSString
    [obj setValue:@"99" forKey:@"num"];
    
    // >= 1.0 为真, 1.0以下为假
    [obj setValue:@0.9 forKey:@"b1"];
    // >= 1.0 为真, 1.0以下为假
    [obj setValue:@"1.1" forKey:@"b2"];
    // true TRUE yes YES false FALSE no NO 都可以识别
    [obj setValue:@"TRUE" forKey:@"b3"];
    
    // 转去还是NSTring
    [obj setValue:@"2014-10-24" forKey:@"date1"];
    // 不认识
    [obj setValue:@"2014-10-24" forKey:@"t1"];
    
    // 结论
    // 数值类型的字串 to 数值 可以转行成数值
    // 类 to 类 不转换直接赋值


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值