2015-10-18 113 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