Почему переменные равны NULL? - PullRequest
0 голосов
/ 03 мая 2011

У меня возникла проблема при разработке приложения для iPhone.Я должен сделать викторину.Тест находится в NSArray, и каждый вопрос имеет заголовок, некоторые ответы и оценку по ответам.Вся эта информация находится в NSMutableArray.

Когда я пытаюсь вывести значение «оценка» для примера, я получаю NULL, а не число.

Пример: MYCOMMON.H

#import <Foundation/Foundation.h>
#import "FBConnect/FBConnect.h"


@interface MyCommon : NSObject <FBRequestDelegate,FBDialogDelegate,FBSessionDelegate>
 {

    NSArray *quizz;
    int iCurrentQuestion;
    int iScore;
    int iRep;

    NSArray *permissions;

};

+ (MyCommon *)Singleton;


@property (nonatomic, retain) NSArray *quizz;
@property (assign) int iCurrentQuestion;
@property (retain,nonatomic) NSArray *permissions;
@property (assign) int iScore;
@property (assign) int iRep;
@end


   MYCOMMON.M
@implementation MyCommon

static MyCommon * SingletonManager = nil;

@synthesize iCurrentQuestion, iScore, iRep;
@synthesize quizz;


-(id)init {

    if (self = [super init]) {

    iCurrentQuestion = 0;
        iRep = 0;
        iScore = 0;

        permissions =  [[NSArray arrayWithObjects:@"publish_stream",nil] retain];

    }
    return self;

}

-(void)dealloc {

    // Do things
    [ super dealloc ];

}

- (int)GetScoreForReponse 
{    


    MyCommon *pCommon = [MyCommon Singleton];

    NSLog(@"GetScoreForReponse iScore : %@, pCommon.iScore);

    NSDictionary *dataItem = [quizz objectAtIndex:iCurrentQuestion];


    int add_score = 0;

    if (iRep == 1)
    {
            add_score = [[dataItem objectForKey:@"score1"]intValue];
    }
    else if (iRep == 2)
    {

         add_score =  [[dataItem objectForKey:@"score2"]intValue];
    }
    else if (iRep == 3)
    {
         add_score =  [[dataItem objectForKey:@"score3"]intValue];
    }
    else if (iRep == 4)
    {
         add_score =  [[dataItem objectForKey:@"score4"]intValue];
    }
    else if (iRep == 5)
    {
         add_score =  [[dataItem objectForKey:@"score5"]intValue];
    }
    else
        NSLog(@"error !");

    return add_score;
}

Спасибо за помощь!

1 Ответ

2 голосов
/ 03 мая 2011

Вы пытаетесь распечатать описание объекта Objective-C, на который ссылается адрес, сохраненный в iScore, используя% @, вместо этого используйте% d. Если бы iScore отличался от нуля, это скорее всего привело бы к сбою, чем к NULL.

NSLog(@"GetScoreForReponse iScore : %d", pCommon.iScore);

Вот список Спецификаторов формата строки .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...