ios - How to skip data passing into [NSString stringWithFormat:] -
ios - How to skip data passing into [NSString stringWithFormat:] -
consider below code:
int count = 1; nsstring* format = count == 1 ? @"one %2$@" : @"%1$d %2$@s"; nsstring* result = [nsstring stringwithformat: format, count, @"bread"]; what count not 1, result valid:
2 breads 4 breads however count 1, causes exc_bad_access
nslog(@"%@", [nsstring stringwithformat:@"one %2$@", 1, @"bread"]); xcode compiler complains upper code:
data argument not used format string i know reason error. approach(dynamic format may skips data) useful if works.
is there workaround this?
[nsstring stringwithformat:] not back upwards positional parameters. looks bug in [nsstring stringwithformat:].
one workaround (hack) utilize plain printf functions , convert result 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); but proper solution create "localizable.strings" file language plural rules, described in "handling noun plurals , units of measurement" in internationalization , localization guide.
see "string localization" documentation , examples.
ios objective-c xcode nsstring format
Comments
Post a Comment