Насколько нам известно, в англоговорящей стране люди всегда записывают свои имена в формате «FirstName MiddleName LastName», например «Steven Paul Jobs». Однако на каком-то другом языке он отличается, например, в Китае, люди обычно пишут имя как «LastName FirstName». Я хочу узнать что-то в «NSLocale Class Reference», но это не очень помогло мне. Я знаю, что я могу сделать «switch case» от NSLocaleCountryCode, но я не знаю привычки каждой страны. Итак, есть ли лучший способ решить проблемы с именем? Спасибо за помощь.Упоминание порядка имен в iOS о NSLocale
ответ
Да, есть набор для этого написанного Mattt, который разработал Afnetworking:
TTTNameFormatter
имена TTTNameFormatter форматов по интернационализации стандартов рамок AddressBook, которые определяют, например, порядок отображения имен и разграничение компонентов с пробелами.
TTTNameFormatter is not available on OS X.
Пример
TTTNameFormatter *nameFormatter = [[TTTNameFormatter alloc] init];
NSString *frenchName = [nameFormatter stringFromPrefix:nil firstName:@"Guillaume" middleName:@"François" lastName:@"Antoine" suffix:@"Marquis de l'Hôpital"];
NSLog(@"%@", frenchName);
// "Guillaume François Antoine Marquis de l'Hôpital"
NSString *japaneseName = [nameFormatter stringFromFirstName:@"孝和" lastName:@"関"];
NSLog(@"%@", japaneseName);
// "関孝和"
получить его здесь:
Вы можете использовать рамки AddressBook, чтобы получить заказ имя. Просто добавьте его в проект и сделать #import "AddressBookUI/AddressBookUI.h"
, а затем вы можете использовать этот метод, например:
- (NSString*)localNameFormatterWithFirstName:(NSString*)firstName middleName:(NSString*)middleName andLastName:(NSString*)lastName {
ABRecordRef record = ABPersonCreate();
ABRecordSetValue(record, kABPersonFirstNameProperty, (__bridge CFStringRef)firstName, NULL);
ABRecordSetValue(record, kABPersonMiddleNameProperty, (__bridge CFStringRef)middleName, NULL);
ABRecordSetValue(record, kABPersonLastNameProperty, (__bridge CFStringRef)lastName, NULL);
NSString *displayName = (__bridge_transfer NSString*)ABRecordCopyCompositeName(record);
CFRelease(record);
return displayName;
}
Любой аргумент, который равен нулю, будет проигнорировано.
Эта функциональность была добавлена в Foundation.framework. Совместимость с iOS9 +.
Я еще не вижу его в документации, но он находится в файлах заголовков, и вы можете использовать его на Swift Playground.
Детальная информация об этой проблеме содержится в WWDC 2015 Session 227 (около 22 минут). В этом сеансе они говорят о NSPersonNameComponents и NSPersonNameComponentsFormatter.
Пример:
let components = NSPersonNameComponents()
components.namePrefix = "Mrs."
components.givenName = "Grace"
components.middleName = "Murray"
components.familyName = "Hopper"
NSPersonNameComponentsFormatter.localizedStringFromPersonNameComponents(
components, style: .Default, options: [])
- 1. Не упоминание о поведении sms
- 2. Swift NSLocale Simulator iOS 8
- 3. Динамическое упоминание имен столбцов на сервере SQL
- 4. Можно ли распечатать валюту NSLocale в ios?
- 5. создание динамического NSLocale с данными о местоположении
- 6. NumberFormatter, NSLocale, Xcode, iOS, Swift 3.0
- 7. IOS NSDateFormatter нуждается NSLocale даже это UTC
- 8. ios: NSLocale/Grouping Separator - раздражающие предупреждения
- 9. Конвенция о присвоении имен новым устройствам iOS
- 10. Упоминание API - Отметить упоминание как READ
- 11. NSLocale setPreferredLanguage
- 12. NSLocale NSLocaleCalendar вызывает EXC_BAD_ACCESS
- 13. NSLocale Имена языков в локальном скрипте
- 14. Косвенное упоминание в Freemarker
- 15. Упоминание справок в Lua
- 16. Почему Xcode 6.1 убит [NSLocale preferredLanguages] в симуляторах IOS 8
- 17. Как преобразовать iOS NSLocale localeIdentifier в Java Locale?
- 18. Как получить язык конкретной страны от NSLocale в ios?
- 19. Какой NSLocale использовать с uppercaseStringWithLocale :?
- 20. Упоминание о том, у кого установлен флажок с фильтром поиска
- 21. NSLocale to Country name
- 22. NSLocale Swift 3
- 23. scala о создании конструктора порядка
- 24. Как [NSLocale preferredLanguages] работает?
- 25. NSLocale и название страны
- 26. Регулярные выражения для изменения порядка имен файлов
- 27. NSLocale всегда возвращает en_US
- 28. NSLocale заставить тип календаря
- 29. иностранных Упоминание в картографа данных
- 30. xcode 6.1 iOS 8.1 NSLocale displayNameForKey NSLocaleIdentifier return noil
Большое спасибо. TTTNameFormatter также основан на AddressBookUI, он действительно работает. (Тем не менее, я слышал, что AddressBookUI будет устаревшим в iOS9. Кажется, мне нужно написать еще одну версию If/Else о версии iOS.) –