2012-07-19 149 views
1

首先對不起我的英語,這不是我的母語langage :)我得到一個__NSCFNumber isEqualToString:]錯誤

我得到這個崩潰

「終止應用程序由於未捕獲異常 'NSInvalidArgumentException',原因:' - [__ NSCFNumber isEqualToString:]:無法識別的選擇器發送到實例0x68b9d00'「。

我在這裏看到很多類似的錯誤和問題,但其原因與我的截然不同。

我有一個NSObject,我試圖通過槽prepareForSegue稱爲事件。 事件是由3 NSString組成的,這裏是我的Event.h:

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

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

@end 

當我在另一邊的事件對象,我可以輸出事件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

請將代碼發佈到創建'Event'對象的地方。看來'lat'被設置爲'NSNumber'的一個實例,而不是'NSString' – sbooth 2012-07-19 05:23:26

回答

3

想必這是因爲設置的變量是一個NSNumber,而不是NSString(聲明)。您可以實現此變量的setter,並在設置爲查找違規者時測試該類型是NSString。

+1

哦,我剛剛發現我的錯誤,這要歸功於你。 我正在設置NSString(我認爲是一個NSString),但實際上是一個NSInteger。 你是對的:) – 2012-07-19 05:46:45

相關問題