NSFormatter
NSFormatter абстрактный класс, объявляющий интерфейс для объектов, создающих, интерпретирующих и проверяющих текстовое представление содержания ячейки. Платформа Основы обеспечивает два конкретных подкласса NSFormatter генерировать эти объекты: NSNumberFormatter и NSDateFormatter.
Разделение на подклассы примечаний
NSFormatter предназначается для разделения на подклассы. Пользовательское средство форматирования может ограничить ввод и улучшить дисплей данных новыми способами. Например, у Вас могло быть пользовательское средство форматирования, гарантирующее, чтобы порядковые номера, введенные пользователем, соответствовали предопределенным форматам. Прежде чем Вы решите создать пользовательское средство форматирования, удостоверьтесь, что Вы не можете сконфигурировать общедоступные подклассы NSDateFormatter и NSNumberFormatter удовлетворить Ваши требования.
Для получения инструкций по тому, как создать Ваше собственное средство форматирования, посмотрите Создание Пользовательского Средства форматирования.
Наследование
Соответствует
-
AnyObject -
CVarArgType -
Сопоставимый -
Hashable -
NSCoding -
NSCopying -
NSObjectProtocol -
Печатаемый -
NSCoding -
NSCopying -
NSObject
Оператор импорта
Swift
import Foundation
Objective C
@import Foundation;
Доступность
Доступный в OS X v10.0 и позже.
-
Реализация по умолчанию этого метода повышает исключение.
Объявление
Swift
func stringForObjectValue(_anObject: AnyObject) -> String?Objective C
- (NSString *)stringForObjectValue:(id)anObjectПараметры
anObjectОбъект, для которого возвращается текстовое представление.
Возвращаемое значение
NSStringвозразите, что дословно представляетobjectдля дисплея. Возвратыnilеслиobjectне имеет корректного класса.Обсуждение
При реализации подкласса возвратитесь
NSStringвозразите, что дословно представляет объект ячейки для дисплея и — еслиeditingStringForObjectValue:не реализован — для редактирования. Сначала протестируйте переданный - в объекте видеть, имеет ли это корректный класс. Если это не, возвратитьсяnil; но если это имеет правильный класс, возвратитесь должным образом отформатированный и, при необходимости, локализованная строка. (См. спецификациюNSStringкласс для форматирования и локализации подробных данных.)Следующая реализация (который соединяется с
getObjectValue:forString:errorDescription:пример выше) префиксы двухразрядное представление плавающее со знаком доллара:- (NSString *)stringForObjectValue:(id)anObject {if (![anObject isKindOfClass:[NSNumber class]]) {return nil;}return [NSString stringWithFormat:@"$%.2f", [anObject floatValue]];}
Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в OS X v10.0 и позже.
-
attributedStringForObjectValue (_: withDefaultAttributes:) - attributedStringForObjectValue:withDefaultAttributes:Возвраты реализации по умолчанию
nilуказать, что объект средства форматирования не обеспечивает приписанную строку.Объявление
Swift
func attributedStringForObjectValue(_anObject: AnyObject, withDefaultAttributesattributes: [NSObject : AnyObject]?) -> NSAttributedString?Objective C
- (NSAttributedString *)attributedStringForObjectValue:(id)anObjectwithDefaultAttributes:(NSDictionary *)attributesПараметры
anObjectОбъект, для которого возвращается текстовое представление.
attributesАтрибуты по умолчанию для использования для возвращенной приписанной строки.
Возвращаемое значение
Представляющая приписанная строка
anObject.Обсуждение
При реализации подкласса возвратитесь
NSAttributedStringвозразите, должна ли строка для дисплея иметь некоторые атрибуты. Например, Вы могли бы хотеть, чтобы отрицательные величины в финансовом приложении появились в красном тексте. Вызовите свою реализациюstringForObjectValue:для получения неприписанной строки затем создайтеNSAttributedStringобъект с ним (см.initWithString:). Используйтеattributesсловарь по умолчанию для сброса атрибутов строки, когда изменение в значении гарантирует его (например, отрицательная величина становится положительной) для получения информации о создании приписанных строк, видит Приписанное Строковое Руководство по программированию.Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в OS X v10.0 и позже.
См. также
-
Реализация по умолчанию этого метода вызывает
stringForObjectValue:.Объявление
Swift
func editingStringForObjectValue(_anObject: AnyObject) -> StringObjective C
- (NSString *)editingStringForObjectValue:(id)anObjectПараметры
anObjectОбъект, для которого можно возвратить строку редактирования.
Возвращаемое значение
NSStringобъект, использующийся для редактирования текстового представленияanObject.Обсуждение
При реализации подкласса переопределите этот метод только, когда строка, которую пользователи видят и строка, которую они редактируют, отличается. В Вашей реализации возвратитесь
NSStringобъект, использующийся для редактирования, после логики, рекомендуемой для реализацииstringForObjectValue:. Если Вы хотите знаки доллара в выведенных на экран строках, удаленных для редактирования, как пример, Вы реализовали бы этот метод.Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в OS X v10.0 и позже.
-
Реализация по умолчанию этого метода повышает исключение.
Объявление
Параметры
anObjectЕсли преобразование успешно, по возврату содержит объект, создаваемый из
string.stringСтрока для парсинга.
errorЕсли не -
nil, если существует ошибка во время преобразования, по возврату содержитNSStringобъект, описывающий проблему.Возвращаемое значение
YEStrueесли преобразование от строки до объекта содержания ячейки было успешно, иначеNOfalse.Обсуждение
При реализации подкласса возвратите ссылкой объект
anObjectпосле создания его отstring. ВозвратитьсяYEStrueесли преобразование успешно. Если Вы возвращаетесьNOfalse, также возвратитесь косвенно (вerror) локализованное презентабельное пользователемNSStringобъект, объясняющий причину, почему преобразование перестало работать; делегат (если таковые имеются)NSControlобъект, управляющий ячейкой, может тогда реагировать на отказ вcontrol:didFailToFormatString:errorDescription:. Однако, еслиerrornil, отправитель не интересуется описанием ошибки, и Вы не должны пытаться присвоить тот.Следующий пример (который соединяется с поданным примером
stringForObjectValue:) преобразовывает строковое представление суммы в долларах, включающей знак доллара; это используетNSScannerэкземпляр для преобразования этой суммы в плавание после снятия начального знака доллара.- (BOOL)getObjectValue:(id *)obj forString:(NSString *)string errorDescription:(NSString **)error {float floatResult;NSScanner *scanner;BOOL returnValue = NO;scanner = [NSScanner scannerWithString: string];[scanner scanString: @"$" intoString: NULL]; //ignore return valueif ([scanner scanFloat:&floatResult] && ([scanner isAtEnd])) {returnValue = YES;if (obj)*obj = [NSNumber numberWithFloat:floatResult];} else {if (error)*error = NSLocalizedString(@"Couldn’t convert to float", @"Error converting");}return returnValue;}
Специальные замечания
До OS X v10.6, реализация этого метода в обоих
NSNumberFormatterиNSDateFormatterвозвратился быYEStrueи объектное значение, даже если только могла бы быть проанализирована часть строки. Это проблематично, потому что Вы не можете быть уверены, какая часть строки была проанализирована. Если часть строки не может быть проанализирована, для приложений, соединенных на или после OS X v10.6, этот метод вместо этого возвращает ошибку. Можно использоватьgetObjectValue:forString:range:error:для получения старого поведения — это возвращает диапазон успешно проанализированной подстроки.Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в OS X v10.0 и позже.
См. также
-
isPartialStringValid (_: newEditingString:errorDescription:) - isPartialStringValid:newEditingString:errorDescription:Возвращает булево значение, указывающее, допустима ли частичная строка.
Объявление
Параметры
partialStringТекст в настоящее время в ячейке.
newStringЕсли
partialStringпотребности, которые будут изменены по возврату, содержит замещающую строку.errorЕсли не -
nil, если сбои проверки содержатNSStringобъект, описывающий проблему.Возвращаемое значение
YEStrueеслиpartialStringприемлемое значение, иначеNOfalse.Обсуждение
Этот метод вызывается каждый раз, когда пользователь нажимает клавишу, в то время как ячейка имеет клавиатурный фокус — это позволяет Вам проверить и отредактировать текст ячейки, поскольку пользователь вводит его.
В реализации подкласса оценить
partialStringсогласно контексту, отредактируйте текст при необходимости и возврат ссылкой любая отредактированная строка вnewString. ВозвратитьсяYEStrueеслиpartialStringприемлемо иNOfalseеслиpartialStringнедопустимо. Если Вы возвращаетесьNOfalseиnewStringnil, дисплеи ячейкиpartialStringминус введенный последний знак. Если Вы возвращаетесьNOfalse, можно также возвратиться косвенноNSStringобъект (вerror) это объясняет причину, почему проверка перестала работать; делегат (если таковые имеются)NSControlобъект, управляющий ячейкой, может тогда реагировать на отказ вcontrol:didFailToValidatePartialString:errorDescription:. Если замена произойдет, диапазон выбора будет всегда устанавливаться до конца текста.Этот метод является методом совместимости. Если подкласс переопределяет этот метод и не переопределяет
isPartialStringValid:proposedSelectedRange:originalString:originalSelectedRange:errorDescription:, как этот метод вызовут прежде (isPartialStringValid:proposedSelectedRange:originalString:originalSelectedRange:errorDescription:просто вызовы этот по умолчанию).Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в OS X v10.0 и позже.
-
isPartialStringValid (_: proposedSelectedRange:originalString:originalSelectedRange:errorDescription:) - isPartialStringValid:proposedSelectedRange:originalString:originalSelectedRange:errorDescription:Этот метод должен быть реализован в подклассах, хотящих проверить пользовательские изменения в строке в поле, где пользователь изменяется, не обязательно в конце строки и сохраняют выбор (или устанавливают различный, такой как выбор ошибочной части строки пользователь ввел).
Объявление
Swift
func isPartialStringValid(_partialStringPtr: AutoreleasingUnsafeMutablePointer<NSString?>, proposedSelectedRangeproposedSelRangePtr: NSRangePointer, originalStringorigString: String, originalSelectedRangeorigSelRange: NSRange, errorDescriptionerror: AutoreleasingUnsafeMutablePointer<NSString?>) -> BoolObjective C
- (BOOL)isPartialStringValid:(NSString **)partialStringPtrproposedSelectedRange:(NSRangePointer)proposedSelRangePtroriginalString:(NSString *)origStringoriginalSelectedRange:(NSRange)origSelRangeerrorDescription:(NSString **)errorПараметры
partialStringPtrНовая строка для проверки.
proposedSelRangePtrДиапазон выбора, который будет использоваться, если строка будет принята или заменена.
origStringИсходная строка, перед предложенным изменением.
origSelRangeВыбор передвигается, по которому должно иметь место изменение.
errorЕсли не -
nil, если сбои проверки содержатNSStringобъект, описывающий проблему.Возвращаемое значение
YEStrueеслиpartialStringPtrприемлемо, иначеNOfalse.Обсуждение
В реализации подкласса оценить
partialStringсогласно контексту. ВозвратитьсяYEStrueеслиpartialStringPtrприемлемо иNOfalseеслиpartialStringPtrнедопустимо. Присвойте новую строкуpartialStringPtrи новый диапазон кproposedSelRangePtrи возвратитесьNOfalseесли Вы хотите заменить строку и изменить диапазон выбора. Если Вы возвращаетесьNOfalse, можно также возвратиться косвенноNSStringобъект (вerror) это объясняет причину, почему проверка перестала работать; делегат (если таковые имеются)NSControlобъект, управляющий ячейкой, может тогда реагировать на отказ вcontrol:didFailToValidatePartialString:errorDescription:.Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в OS X v10.0 и позже.
-
Указывает ширину модуля, определяя текстовое представление.
Объявление
Swift
enum NSFormattingUnitStyle : Int { case Short case Medium case Long }Objective C
enum { NSFormattingUnitStyleShort = 1, NSFormattingUnitStyleMedium, NSFormattingUnitStyleLong, }; typedef NSUInteger NSFormattingUnitStyle;Константы
-
ShortNSFormattingUnitStyleShortУказывает короткую ширину.
Соответствующее значение
NSInteger, равный1.Доступный в OS X v10.10 и позже.
-
MediumNSFormattingUnitStyleMediumУказывает среднюю ширину.
Соответствующее значение
NSInteger, равный2.Доступный в OS X v10.10 и позже.
-
LongNSFormattingUnitStyleLongУказывает долгую ширину.
Соответствующее значение
NSInteger, равный3.Доступный в OS X v10.10 и позже.
Обсуждение
Модуль представлен в самой короткой доступной нотации. Например, для английского языка, при форматировании «3 фунтов»: NSFormattingUnitStyleLong составляет «3 фунта»; NSFormattingUnitStyleMedium составляет «3 фунта»; NSFormattingUnitStyleShort «3#».
Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в OS X v10.10 и позже.
-
-
Указывает контекст капитализации.
Объявление
Swift
enum NSFormattingContext : Int { case Unknown case Dynamic case Standalone case ListItem case BeginningOfSentence case MiddleOfSentence }Objective C
enum { NSFormattingContextUnknown = 0, NSFormattingContextDynamic = 1, NSFormattingContextStandalone = 2, NSFormattingContextListItem = 3, NSFormattingContextBeginningOfSentence = 4, NSFormattingContextMiddleOfSentence = 5, }; typedef NSUInteger NSFormattingContext;Константы
-
UnknownNSFormattingContextUnknownУказывает, что контекст капитализации, который будет использоваться, неизвестен.
Это - значение по умолчанию. Соответствующее значение
NSInteger, равный0.Доступный в OS X v10.10 и позже.
-
DynamicNSFormattingContextDynamicУказывает неопределенный формат.
Контекст капитализации определяется динамично от набора {
NSFormattingContextStandalone,NSFormattingContextBeginningOfSentence,NSFormattingContextMiddleOfSentence}.Когда строковый прокси используется в
stringWithFormat:, средство форматирования возвращает строковый прокси для универсальной строки и затем форматирует строковое использованиеNSFormattingContextUnknown. Средство форматирования получает контекст из расположения универсальной строки и затем форматирует строку соответственно.Соответствующее значение
NSInteger, равный1.Доступный в OS X v10.10 и позже.
-
StandaloneNSFormattingContextStandaloneУказывает форматирование в течение начала предложения.
Контекст капитализации, если символ даты или даты должен быть отформатирован с капитализацией, подходящей для автономного использования, такого как изолированное имя на странице календаря.
Соответствующее значение
NSInteger, равный2.Доступный в OS X v10.10 и позже.
-
ListItemNSFormattingContextListItemУказывает форматирование для списка или меню.
Контекст капитализации, если символ даты или даты должен быть отформатирован с капитализацией, подходящей для списка или пункта меню.
Соответствующее значение
NSInteger, равный3.Доступный в OS X v10.10 и позже.
-
BeginningOfSentenceNSFormattingContextBeginningOfSentenceУказывает форматирование в течение начала предложения.
Контекст капитализации, если символ даты или даты должен быть отформатирован с капитализацией, надлежащей в течение начала предложения.
Соответствующее значение
NSInteger, равный4.Доступный в OS X v10.10 и позже.
-
MiddleOfSentenceNSFormattingContextMiddleOfSentenceУказывает форматирование в течение середины предложения.
Контекст капитализации, если символ даты или даты должен быть отформатирован с капитализацией, надлежащей в течение середины предложения.
Соответствующее значение
NSInteger, равный5.Доступный в OS X v10.10 и позже.
Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в OS X v10.10 и позже.
-
