2013-08-22 11 views
2

我一直在試圖調試我的代碼的問題,只是出現了一個奇怪的現象。在調試區發現這個當斷點被觸發:我的NSDictionary以某種方式有一個密鑰的多個值

enter image description here

我是在觀察,有多個值此鍵糾正:@"6898173"

這可能是什麼原因造成的?我不使用字符串字面值來設置這些鍵值對,而是通過獲取從GKSession傳輸中檢索並解碼的字符串的子字符串。

我仍然有這個在xcode的調試區域,incase theres其他任何可能有幫助。

編輯:

按要求,這裏是將創造兩個字符串之一(另一個是在較早時間創建)代碼:

[carForPeerID setObject:[[MultiScreenRacerCarView alloc] initWithImage:[UIImage imageNamed:@"simple-travel-car-top_view"] trackNumber:[[[NSString stringWithUTF8String:data.bytes] substringWithRange:range] intValue]] forKey:[[NSString stringWithUTF8String:[data bytes]] substringFromIndex:9]]; 

data的字符串可能會是像這樣: car00.0146898173

編輯:發送所述數據

代碼:

[self.currentSession sendData:[[NSString stringWithFormat:@"car%i%@%@", [(MultiScreenRacerCarView *)[carForPeerID objectForKey:peerID] trackNumber], speed, [(MultiScreenRacerCarView *)[carForPeerID objectForKey:peerID] owner]] dataUsingEncoding:NSUTF8StringEncoding] toPeers:@[(NSString *)[peersInOrder objectAtIndex:(self.myOrderNumber + 1)]] withDataMode:GKSendDataReliable error:nil]; 

對不起,很難看。它只有一條線。

+1

你可以嘗試打印每個鍵的內存地址嗎? –

+0

@GabrielePetronella key [0]:'0x08779290' key [1]:'0x09298de0' –

+0

顯然即使兩個字符串具有相同的值,但它們是兩個不同的對象。奇怪,雖然... –

回答

3

你看到的是一個調試器「feechure」。當你有一個可變的字典並修改它時,調試器可能不會向你顯示該對象的正確視圖。

要可靠地顯示NSMutableArrayNSMutableDictionary的內容,請切換到控制檯並鍵入po carForPeerID

+2

看,這就是爲什麼我應該寫更多的答案,少評論:) – Abizern

+0

@HotLicks我不否認它沒有顯示我什麼,我想看到的。閱讀上面的粗體評論。現在這是一個問題。奇怪的字符不顯示在調試區域,我明白這一點。我沒有記錄字典全部內容的原因是因爲我不確定是否可以重現這種情況,但我會嘗試。 –

+0

@SantaClaus - 上面的視圖看起來是調試變量顯示窗口。這種觀點不可信。而且你還沒有解釋你收到什麼「信息」,或者你如何「記錄」它們。 –

相關問題