好的,所以我在 SO 上发现了另一个类似的问题,但是那个人正在向数组发送 stringValue 消息,我有不同的情况。
这是即将死去的代码行:
AppModel.instance.loginDataObject.uid.stringValue
仅出于调试目的,我将其放入 NSLog 中,如下所示:
NSLog(@"uid stringValue: %@", AppModel.instance.loginDataObject.uid.stringValue);
被抛出的异常是:
-[__NSCFString stringValue]: unrecognized selector sent to instance 0xa8525d0
现在,“uid”是一个 NSNumber,在 loginDataObject 的头文件中声明:
#import "Jastor.h"
@interface LDLoginData : Jastor
@property (nonatomic, strong) NSString *api_login_key;
@property (nonatomic, strong) NSString *clazz_reg_code;
@property (nonatomic, strong) NSNumber *current_clazz;
@property (nonatomic, strong) NSString *mail;
@property (nonatomic, strong) NSString *name;
@property (nonatomic, strong) NSString *profile_first_name;
@property (nonatomic, strong) NSString *profile_last_name;
@property (nonatomic, strong) NSNumber *teacher_id;
@property (nonatomic, strong) NSNumber *uid;
@property (nonatomic, strong) NSString *user_type;
@property (nonatomic, strong) NSNumber *va_user_clazz_id;
@end
请注意,我使用Jastor类来填充 loginDataObject。
此外,调试器命令显示它是一个 NSNumber:
po AppModel.instance.loginDataObject.uid
(NSNumber *) $1 = 0x0a8525d0 7593
但不知何故,它不响应 stringValue 选择器:
po AppModel.instance.loginDataObject.uid.stringValue
error: property 'stringValue' not found on object of type 'NSNumber *'
error: 1 errors parsing expression
尽管此方法已明确记录在案。
现在,如果我在 uid 对象上调用描述方法:
po AppModel.instance.loginDataObject.uid.description
error: property 'description' not found on object of type 'NSNumber *'
error: 1 errors parsing expression
它在控制台中不喜欢它,但是如果我将代码更改为:
NSLog(@"uid stringValue: %@", AppModel.instance.loginDataObject.uid.description);
代码执行,我在控制台中得到了这个:
2012-09-29 15:02:11.829 MyApp[28661:c07] uid stringValue: 7593
那么,发生了什么事?