2015-10-18 112 views
0

我可能缺少或没有看到非常基本的东西,但我无法再调试它。无法在自定义的NSObject上分配一个值

这里是我的代码:

NSLog(@"Joker Selected : %d, Prio Value is :%@",joker,[LBGameData sharedGameData].round.joker_1_used ? @"true" : @"false"); 
[LBGameData sharedGameData].round.joker_1_used = TRUE; 
NSLog(@"End of selection, Prio Value is :%@",[LBGameData sharedGameData].round.joker_1_used ? @"true" : @"false"); 

这里的定义。

LBGameData

@property (strong, retain) LBGameRound* round; 
+(instancetype)sharedGameData; 

LBGameRound

@property (assign, nonatomic) BOOL joker_1_used; 

这是我的输出:

2015-10-18 18:54:01.478 Game[804:298953] Joker Selected : 1, Prio Value is :false 
2015-10-18 18:54:01.479 Game[804:298953] End of selection, Prio Value is :false 

为什么我看不到true在第二输出,虽然我把它放在上面的线上?

+3

您是否验证了'[LBGameData sharedGameData]'和'[LBGameData sharedGameData] .round'不是'nil'?顺便说一句 - 在'BOOL'值中使用'YES'和'NO'。 – rmaddy

+0

@rmaddy正确,一轮是零。让它成为答案,我可以接受它!谢谢! – ghostrider

+0

根据要求添加了答案。 – rmaddy

回答

1

鉴于输出,最可能的问题是[LBGameData sharedGameData][LBGameData sharedGameData].roundnil

试图访问nil值中的BOOL值将导致NO值导致您看到的输出。

0

请尝试以下方法。

BOOL joker_1_used = [LBGameData sharedGameData].self.round.joker_1_used =TRUE; 
    NSLog(@"End of selection, Prio Value is :%@",joker_1_used? @"true" : @"false"); 

输出:

End of selection, Prio Value is :true 
+0

但是OP有'LBGameData'的共享实例,而不是'LBGameRound'。 – rmaddy