Xcode 模拟在 UITableView 字幕中显示价值,但 iPad 显示<null>



在我的项目中,我用各种不同的变量创建了一个字符串,然后将其插入到我的字幕中。模拟器直接显示它。然而在IPad上,它只显示一个变量的NULL,而不显示任何其他变量。有人经历过类似的问题吗?

由于我无法发布图片(到目前为止还没有足够的声誉),我只能通过键入以下内容来重建它:

IOS模拟器:

Thomas Winter

2014-01-05-达乌尔:0.5小时

真实设备:

Thomas Winter

2014-01-05-Dauer:(空)h

字符串是通过使用initStringWithFormat方法组合在一起的,我在其中包含了变量。看到h在字幕中仍然存在,但在它之前没有持续时间,我只能认为这个变量在实际设备上不起作用

NSNumberFormatter*格式化程序=[[NSNumberFormatter alloc]init];

[formatter setNumberStyle:NSNumberFormatterDecimalStyle];
[formatter setMaximumFractionDigits:2];
NSString * dauerString =[[NSString alloc]initWithFormat:@"Dauer: %@h",[formatter numberFromString:[[self.leistungListe objectAtIndex:indexPath.row]getDauer]]];
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"YYYY-MM-dd"];
NSString * dateString = [dateFormat stringFromDate:[[self.leistungListe objectAtIndex:indexPath.row]getDatum]];
NSString * detailTextString = [[NSString alloc]initWithFormat:@"%@ - %@",dateString,dauerString];
cell.detailTextLabel.text =detailTextString;

这可能是模拟器和设备上的区域设置不同。如果要转换为数字的字符串是固定格式的,则需要指定此确切格式,包括使用的十进制和千位分隔符。

将数字格式化程序设置为"十进制"需要设备或模拟器的各种设置,尤其是用于分隔小数的字符-在欧洲大部分地区,它是逗号(例如Pi是314159……),但在其他地方,它是句点(3.14159)。您正在转换的字符串将具有其中一个,它将与模拟器的区域设置中使用的十进制分隔符相匹配,而您的设备的区域设置将具有另一个。当数字格式化程序读取无法转换的字符串时,它会返回nil,这就是您所看到的。

手动设置格式,或者考虑其他方法——除了从文本文件、web服务或用户条目进行初始解析之外,没有理由将数字作为字符串。

最新更新