首先,对不起我的英语,这不是我的母语:)
我正在崩溃
“因未捕获的异常而终止应用 '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;
}
这令我感到困惑,我将非常感激!
谢谢!
答案 0 :(得分:3)
据推测,这是因为设置的变量是NSNumber,而不是NSString(如声明的那样)。您可以为此变量实现setter,并在设置为查找违规者时测试类型为NSString。