2012-11-14 71 views
0

這是我再次在過去的一個半小時裏一直在爲此奮鬥,似乎無法找到實現這一點的好方法。我基本上試圖在點擊按鈕時在標籤上顯示結果。 (剛開始使用xcode,所以我不確定這是否適合該操作)。總之,這裏是我的代碼和我的控制器上的方法:我有objective c和xcode將值分配給來自NSInteger類型變量的標籤

@interface Match : NSObject{ 
} 
@property NSInteger *Id; 
@property NSString *fighter1, *fighter2; 
- (id) initWithWCFId:(NSInteger)matchId bracketId:(NSInteger)bracketId; 
@end 


@implementation Match 
- (id) initWithWCFId:(NSInteger)matchId bracketId:(NSInteger)bracketId{ 
    self = [self init]; 
    if(self){ 
     self.Id = &(matchId); 
     self.fighter1 = @"Person 1"; 
     self.fighter2 = @"Person 2"; 
    } 
    return self; 
} 
@end 

---控制器---

@interface ViewController : UIViewController{ 
    /*IBOutlet UITextField *txtFieldBracketId; 
    IBOutlet UITextField *txtFieldMatchId;*/ 
} 
@property (weak, nonatomic) IBOutlet UITextField *txtFieldBracketId; 
@property (weak, nonatomic) IBOutlet UITextField *txtFieldMatchId; 
- (IBAction)btnSubmit:(id)sender; 

@end 

---實施

- (IBAction)btnSubmit:(id)sender { 

    @autoreleasepool { 
     Match *match = [[Match alloc]initWithWCFId:[_txtFieldMatchId.text integerValue] bracketId:[_txtFieldBracketId.text integerValue]]; 

     self.lblMatchId.text = [[NSString alloc] initWithString:[NSNumber numberWithInt:match.Id]]; 
     self.lblFighter1.text = [[NSString alloc] initWithString:match.fighter1]; 
     self.lblFighter2.text = [[NSString alloc] initWithString:match.fighter2]; 
    } 
} 

我基本上有兩個文本框。 現在當我點擊按鈕時,它將獲得這些文本框的值,然後顯示基於這些輸入的數據。它會顯示以下三個數據:

Id,Fighter1和Fighter2。

所以發生了什麼,當我按一下按鈕,整個事情停止,並給了我這個錯誤:

NSInvalidArgumentException', reason: '-[__NSCFNumber length]: unrecognized selector sent to instance 0x74656e0' * First throw call stack: (0x1c90012 0x10cde7e 0x1d1b4bd 0x1c7fbbc 0x1c7f94e 0xae4841 0x2891 0x10e1705 0x18920 0x188b8 0xd9671 0xd9bcf 0xd8d38 0x4833f 0x48552 0x263aa 0x17cf8 0x1bebdf9 0x1bebad0 0x1c05bf5 0x1c05962 0x1c36bb6 0x1c35f44 0x1c35e1b 0x1bea7e3 0x1bea668 0x1565c 0x23dd 0x2305) libc++abi.dylib: terminate called throwing an exception

現在我不知道如果我1.我的設計類是正確的方式,使用「NSInteger」作爲屬性ID。或 2.將Id整數分配給字符串(編輯框)是錯誤的。

回答

1

只是self.Id = matchId;

  • 使其向弦除了您的Id屬性的問題,崩潰來自於此:

    self.lblMatchId.text = [[NSString alloc] initWithString:[NSNumber numberWithInt:match.Id]]; 
    

    您試圖將NSNumber對象作爲參數傳遞給initWithString:方法。但是此方法預計值爲NSString,而不是NSNumber

    更新了三行:

    self.lblMatchId.text = [[NSString alloc] initWithFormat:#"%d", match.Id]; 
    self.lblFighter1.text = match.fighter1; 
    self.lblFighter2.text = match.fighter2; 
    

    我假設match.fighter1match.fighter2是NSString的性質。

  • +0

    他們是NSStrings。並感謝您解釋錯誤的原因 – gdubs

    2

    兩件事情:

    1. 屬性不應該是指針類型,所以應該@property NSInteger Id;init它應該是通過使用[NSString stringWithFormat:@"%d", match.Id]
    相關問題