我得到__NSCFNumber isEqualToString:]错误

时间:2012-07-19 05:15:19

标签: objective-c ios

首先,对不起我的英语,这不是我的母语:)

我正在崩溃

  

“因未捕获的异常而终止应用   'NSInvalidArgumentException',原因:' - [__ NSCFNumber   isEqualToString:]:无法识别的选择器发送到实例0x68b9d00'“。

我在这里看到了很多类似的错误和问题,但原因与我的有很大不同。

我有NSObject我尝试通过名为Event的prepareForSegue传递。 事件由3 NSString组成,这是我的Event.h:

@interface              Event : NSObject
{
    NSString*           idEvent;
    NSString*           lat;
    NSString*           lng;
}

@property NSString*     idEvent;
@property NSString*     lat;
@property NSString*     lng;

@end

当我在另一侧获取Event对象时,我可以输出事件get(NSLog(@"%@", eventGet.lat); )的内容,并且它可以正常工作。 但是,当我尝试将"eventGet.lat"放入UILabel时,我收到错误。

以下是发生错误的代码: DetailEvent是我得到事件的视图。

DetailEvent.h:

@interface  DetailEvent : UIViewController

@property (weak, nonatomic) IBOutlet UILabel *latEvent;
@property (weak, nonatomic) IBOutlet UILabel *lngEvent;

@property (strong, nonatomic) Event* eventGet;

@end

和DetailEvent.m:

@implementation DetailEvent

@synthesize latEvent            = _latEvent;
@synthesize lngEvent            = _lngEvent;

@synthesize eventToDisplay      = _eventToDisplay;

- (void)viewDidLoad
{
    [super viewDidLoad];

    // works fine
    NSLog(@"Event lat : %@", _eventToDisplay.lat);

    // here is the crash
    _latEvent.text = _eventToDisplay.lat;
}

这令我感到困惑,我将非常感激!

谢谢!

1 个答案:

答案 0 :(得分:3)

据推测,这是因为设置的变量是NSNumber,而不是NSString(如声明的那样)。您可以为此变量实现setter,并在设置为查找违规者时测试类型为NSString。