我正在處理遊戲工具包的GKTurnBasedMatch類中的腐敗問題(請參閱this thread),有時會導致遊戲狀態無效且matchData損壞。如何識別顯示爲空括號的空NSData對象?
因此,作爲一種解決方法,我正在創建一種方法來識別這些無效匹配,以便我可以適當地處理它們。損壞的matchData似乎是一個很好的方法來做到這一點。但是,到目前爲止,我一直無法識別它們。當我這樣做:
// "match" is an existing GKTurnBasedMatch object
NSLog(@"match data is: %@",[match matchData]);
NSLog(@"match data is nil? %@",[match matchData] == nil ? @"YES" : @"NO");
NSLog(@"match data equals empty nsdata? %@",[match matchData] == [NSData data] ? @"YES" : @"NO");
我得到如下:
match data is: <>
match data is nil? NO
match data equals empty nsdata? NO
所以比賽數據被顯示爲一對空方括號「<>」,其中我希望可以認定爲無,但顯然不是。
順便提一下,我將這個matchData存儲在覈心數據實體中,在NSData屬性下。當我保存NSManagedObjectContext,然後NSLog的NSManagedObject看看裏面有什麼,問題仍然 NSData屬性顯示爲「<>」!
但是,如果我再創建一個新的NSManagedObjectContext,retreive相同NSManagedObject出來,然後NSLog的自己的價值觀,NSData的屬性現在顯示爲零。
因此,在某些時候,核心數據似乎是「清除」了屬性值,因爲它的價值在於其價值無價值。我的問題是,我實際上需要將這個值確定爲無之前這一點,在我將它添加到核心數據存儲時。
這樣做的伎倆,謝謝! – todd412
有同樣的問題。完美的答案。 – mondousage