さて、SOでこれに似た別の質問がありますが、男はstringValueメッセージを配列に送信していましたが、状況は異なります。
これは死んでいるコード行です:
AppModel.instance.loginDataObject.uid.stringValue
デバッグ目的で、次のように NSLog に入れました。
NSLog(@"uid stringValue: %@", AppModel.instance.loginDataObject.uid.stringValue);
スローされている例外は次のとおりです。
-[__NSCFString stringValue]: unrecognized selector sent to instance 0xa8525d0
loginDataObject のヘッダー ファイルで宣言されているように、「uid」は NSNumber です。
#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 オブジェクトで description メソッドを呼び出すと、次のようになります。
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
それで、何が起こっているのですか?