11

看起来好像NSNumberFormatter's设置 custom 的方法formatterssetFormat:在 iPhone 上不可用...

所以这...使我的应用程序崩溃:

NSNumberFormatter *lengthFormatter = [[NSNumberFormatter alloc] init];
[lengthFormatter setFormatterBehavior:NSNumberFormatterBehavior10_4];
[lengthFormatter setNumberStyle:NSNumberFormatterDecimalStyle];
[lengthFormatter setFormat:@"#,##0.0M"];

有没有其他人发生过这种情况?

谢谢,

丹**在下面回答。NSNumberFormatter也有调用的方法setPositiveFormat: setNegativeFormat:来替换折旧的setFormat:**

4

1 回答 1

9

是的,它在NSNumberFormatter 类参考中记录为注释(需要登录)。笔记说:

iPhone OS 注意:iPhone OS 仅支持现代 10.4+ 行为。10.0 风格的方法和格式字符串在 iPhone OS 上不可用。

编辑:添加了更多文本以支持后续问题。

你可以重写你的类似的东西:

NSNumberFormatter *lengthFormatter = [[NSNumberFormatter alloc] init];
[lengthFormatter setNumberStyle:NSNumberFormatterDecimalStyle];
[lengthFormatter setPositiveSuffix:@"M"];
[lengthFormatter setNegativeSuffix:@"M"]; // assuming it can go negative

我建议看一下我上面链接的文档。它专门用于 iPhone 版本的 NSNumberFormatter,因此没有任何会导致应用程序崩溃的方法。它还旨在比原始 NSNumberFormatter 更多地利用用户的本地化设置。有一些方法可以限制显示的内容等,同时仍然利用用户的偏好。不幸的是,已经没有setFormat:方法了。

于 2009-01-06T10:35:31.407 回答