gpt4 book ai didi

ios - 如何跳过传入 [NSString stringWithFormat :] 的数据

转载 作者:行者123 更新时间:2023-11-28 21:55:30 26 4
gpt4 key购买 nike

考虑下面的代码:

int count = 1;
NSString* format = count == 1 ? @"One %2$@" : @"%1$d %2$@s";
NSString* result = [NSString stringWithFormat: format, count, @"Bread"];

什么count不是1,结果有效:

2 Breads
4 Breads

但是 count1,那么它会导致 EXC_BAD_ACCESS

NSLog(@"%@", [NSString stringWithFormat:@"One %2$@", 1, @"Bread"]);

Xcode 编译器提示上层代码:

Data argument not used by format string

我知道这个错误的原因。但是我的方法(可能会跳过一些数据的动态格式)也很有用,如果它有效的话。

有解决办法吗?

最佳答案

[NSString stringWithFormat:] 不支持位置参数。 这看起来像是 [NSString stringWithFormat:] 中的错误。

一种解决方法(hack)是使用普通的 printf 函数并将结果转换为NSString:

char *format = count == 1 ? "One %2$s" : "%1$d %2$ss";
char *tmp;
asprintf(&tmp, format, count, "Bread");
NSString *result = [NSString stringWithUTF8String:tmp];
free(tmp);

但正确的解决方案是创建一个“Localizable.strings”文件语言复数规则,如中所述 "Handling Noun Plurals and Units of Measurement"在国际化和本地化指南中。

另见 "String Localization"用于文档和示例。

关于ios - 如何跳过传入 [NSString stringWithFormat :] 的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26753823/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com