2011-03-07 79 views
1

我很少提問,但是這個令我感到沮喪,因爲我無法在任何地方找到答案!Objective C - 獲得一個類來返回一個值

我只需要調用GameChallenges.m中的函數並將值返回給視圖控制器。 GameChallenges.m將被不同的視圖控制器調用,這就是爲什麼它是分開的。請幫忙!

我有一個名爲GameChallenges的單獨的類文件。

這在它的函數/法:在.H

@class StatsViewController; 

@interface GameChallenges : NSObject { 


    StatsViewController* statsController; 
    NSString* challengeTitle; 
} 

@property (nonatomic, retain) IBOutlet StatsViewController* statsController; 
@property (assign) NSString* challengeTitle; 

-(NSString*)checkChallenge:(int)challegeID; 

@end 

在.M

#import "GameChallenges.h" 
#import "StatsViewController.h" 

@implementation GameChallenges 
@synthesize challengeTitle,statsController; 

-(NSString*)checkChallenge:(int)challegeID{ 
    if(challegeID==1){ 
     self.challengeTitle = @"Some Text."; 
     return challengeTitle; 
    }else if(challegeID==2){ 
     self.challengeTitle = @"Some Other Text."; 
     return challengeTitle; 
    } 
} 

從名爲StatsViewController我打電話這種方法的視圖控制器

in .h

@class GameChallenges; 

@interface StatsViewController : UIViewController { 

     UILabel* challengeIDDescText; 
} 


@property (nonatomic, retain) IBOutlet UILabel* challengeIDDescText; 

@property (nonatomic, retain) IBOutlet GameChallenges* challenges; 

@end 

在.M

[challenges checkChallenge:tempString]; 
challengeIDDescText.text = challenges.challengeTitle; 
+0

問題是什麼?除了您非常規方法的使用外,我沒有看到任何問題。 – 2011-03-07 15:40:07

+0

我在您的問題帖子中看不到問題。但是,您發送的checkChallenge消息可能存在問題。你傳遞一個名爲'tempString'的東西,它是(我懷疑)一個​​'NSString'實例。但'checkChallenge:'預計它的參數是'int',所以你基本上把'NSString'指針指向'int'。在此之後,人們無法期待正確的行爲。 – hoha 2011-03-07 16:09:41

+0

@hoha @fluchtpunkt 如果我簡化了這一點。 如果在我的GameChallenges.h我有: ' @class StatsViewController; @interface GameChallenges:NSObject { \t \t StatsViewController * statsController; \t int count; } - (int)initCount; @property(assign)int count;' 而且在我的。m: ' - (int)initCount { \t count = 1; 返回計數; }' 然後在StatsViewController.m '的NSLog(@ 「算:%I」,[挑戰initCount]);' 它要麼返回0零/零等它只是不能讀取已經返回了什麼。 我的問題是誰能告訴我如何成功返回一個值。謝謝 – 2011-03-07 16:24:33

回答

0

我在Objective-C初學者,然而,在GameChallenges.m代碼看起來怪我......這豈不是更好嗎?

challengeIDDescText.text = [challenges checkChallenge:challengeId]; 
+0

這仍然不起作用。我以前試過。我不知道我是否將這兩者聯繫在一起。也許如果有人能給我一個鏈接的例子?我只是找不到任何東西!謝謝 – 2011-03-07 15:41:57

1

你的代碼是很奇怪的,我會說這是發生了什麼事:

-[GameChallenges checkChallenge]似乎期待一個int,並使用一個稱爲tempString,我猜是NSString *變量調用它。更有可能的是,您的方法沒有分配challengeTitle而沒有有效的return值就結束了。作爲最後聲明並通過int將其修復爲return nil

使用調試器很容易解決這類問題。

另外,看看蘋果的樣品。

+0

好點 - 您通過checkChallenge輸入的是什麼:?如果它不是int值1或2,它不會返回或分配任何字符串。 – rdamborsky 2011-03-07 16:21:45

+0

@rdamborsky它不返回任何東西,即使我簡化了代碼。看到我的帖子上面。 – 2011-03-07 16:27:48

+0

請指點一下蘋果樣品的方向,我找不到任何東西!謝謝 – 2011-03-07 16:28:21