я могу воспроизвести следующий C#/NET:.Net против какао Струнные Форматы
//A
String.Format("There are {0} cats in my {1} and no {2}", 2, "house", "dogs");
в Objective-C/Cocoa:
//B
[NSString stringWithFormat:@"There are %d cats in my %@ and no %@", 2, "house", "dogs"];
Но я не могу это сделать:
//C
String.Format("I have {0} dogs in my house. My {0} dogs are very nice, but it is hard to walk {0} dogs at the same time.", numDogs);
в Objective-C:
//D
[NSString stringWithFormat:@"I have %d dogs in my house. My %d dogs are very nice, but it is hard to walk %d dogs at the same time.", numDogs];
потому что он использует формат printf или что-то еще. Есть ли более продвинутый способ сделать это? Есть ли способ сделать KVC при строчном разборе?
Это технически то, что я хотел:
[player setValue:@"Jimmy" [email protected]"PlayerName"];
//later
[NSString stringWithMagicFormat:@"<PlayerName> sat on a bench in the middle of winter, and <GenderPronoun> felt very cold." andPlayer:player];
// or
[NSString stringwithMagicFormat: playerEnteredStringWithTagInIt andPlayer:player];
Но я соглашайтесь: (см. man 3 printf
)
String.Format(playerEnteredStringWithTagInIt, player.PlayerName, player.PlayerGender, player.GenderPronoun, ...);
Спасибо,
+1 internets DUH. Я соглашусь с этим, если никто ничего не расскажет о KVC. –
@Wevah, это не совместимо с C99? [«Стандарт C99 не включает стиль с использованием« $ », который исходит из спецификации Single Unix.»] (Http://linux.die.net/man/3/printf) –
Зачем это нужно? Не можете ли вы использовать 'gnu99'? Если вы компилируете для OS X (который я предполагаю, так как вы отметили его «какао»), на странице руководства OS X нет этого оговорки. – Wevah