我想提高這個作爲一個與蘋果支持的錯誤,但它需要很長時間才能從他們得到任何答覆,所以...我想問這裏。奇怪的Xcode行爲
調試一個應用程序,我使用一些datetime轉換時區之間的轉換。 我得到以下奇怪的行爲,我想知道是否有其他人看到了這一點,並知道如何解決它。
的Xcode 8.3.2
你可以看到GMTDATE顯示的是2完全不同的日期/時間值(他們甚至不相關的值),它是很難知道哪一個是正確的。 我已經重新啓動Xcode /電腦等,但仍然是相同的!
- (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,仍然一樣。
更新:它與所有的NSString變量發生。只要我爲它們寫入一個值,調試器窗口就會以相同的日期值顯示它們。如果我將它們打印到控制檯或NSLog上,則值正確顯示。
你可以添加這段代碼?這樣我們也可以檢查。 –
對該方法的調用發生雙重顯示 - 因此參數(GMTDate)在Xcode調試器中同時顯示2個不同的值(請參閱屏幕截圖) - 方法調用只是將日期字符串作爲參數傳遞。 –
顯示正在撥打電話的代碼。你確定*它正在發送一個'NSString'?在NSString上使用Quick Look會顯示兩個不同的值 - 特別是你在這裏展示的是什麼...... – DonMag