2017-06-03 68 views
0

我想提高這個作爲一個與蘋果支持的錯誤,但它需要很長時間才能從他們得到任何答覆,所以...我想問這裏。奇怪的Xcode行爲

調試一個應用程序,我使用一些datetime轉換時區之間的轉換。 我得到以下奇怪的行爲,我想知道是否有其他人看到了這一點,並知道如何解決它。

的Xcode 8.3.2

你可以看到GMTDATE顯示的是2完全不同的日期/時間值(他們甚至不相關的值),它是很難知道哪一個是正確的。 我已經重新啓動Xcode /電腦等,但仍然是相同的!

截圖附:enter image description here

- (NSString*) convertToDeviceTime:(NSString*) GMTDate { 

//create the formatter for parsing 
NSDateFormatter *df = [[NSDateFormatter alloc] init]; 
[df setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"GMT"]]; 
[df setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; 

//parsing the string and converting it to NSDate 
NSDate *myGMTDate = [df dateFromString: GMTDate]; 

//create the formatter for the output 
NSDateFormatter *out_df = [[NSDateFormatter alloc] init]; 
[df setTimeZone:[NSTimeZone systemTimeZone]]; 
[out_df setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; 

//output the date 
NSString *myDeviceDate =[out_df stringFromDate:myGMTDate]; 
NSLog(@"the date is %@",myDeviceDate); 
return myDeviceDate; 
} 
下面

新截圖 - 這必須是有毛病的Xcode, 的「令牌」的真正價值顯示在快看,但調試窗口顯示它作爲一個日期!奇怪的。我重新啓動了Mac,仍然一樣。

enter image description here

更新:它與所有的NSString變量發生。只要我爲它們寫入一個值,調試器窗口就會以相同的日期值顯示它們。如果我將它們打印到控制檯或NSLog上,則值正確顯示。

+0

你可以添加這段代碼?這樣我們也可以檢查。 –

+0

對該方法的調用發生雙重顯示 - 因此參數(GMTDate)在Xcode調試器中同時顯示2個不同的值(請參閱屏幕截圖) - 方法調用只是將日期字符串作爲參數傳遞。 –

+0

顯示正在撥打電話的代碼。你確定*它正在發送一個'NSString'?在NSString上使用Quick Look會顯示兩個不同的值 - 特別是你在這裏展示的是什麼...... – DonMag

回答

0

發現罪魁禍首。 在調試器中,「編輯摘要格式」彈出窗口我不知何故無意中粘貼了這個日期值,並且它顯示了所有NSString值。如果我加載另一個項目,它保留了「編輯摘要格式」字符串並將其應用於所有NSString。

榮譽對一箇舊SO張貼在這裏:Strange values displayed in Xcode debugger

截圖附!

enter image description here

enter image description here