NSDataDetector
Наследование
-
NSObject -
NSRegularExpression -
NSDataDetector
-
NSObject -
NSRegularExpression -
NSDataDetector
Соответствует
-
AnyObject -
CVarArgType -
Сопоставимый -
Hashable -
NSCoding -
NSCopying -
NSObjectProtocol -
Печатаемый -
NSCoding -
NSCopying -
NSObject
Оператор импорта
Swift
import Foundation
Objective C
@import Foundation;
Доступность
Доступный в iOS 4.0 и позже.
NSDataDetector класс является специализированным подклассом NSRegularExpression класс, разработанный для соответствия детекторов данных.
В настоящее время NSDataDetector класс может соответствовать даты, адреса, ссылки, телефонные номера и передать транзитом информацию.
Результаты соответствия содержания возвращаются как NSTextCheckingResult объекты. Однако NSTextCheckingResult объекты, возвращенные NSDataDetector отличаются от возвращенных базовым классом NSRegularExpression. Результаты, возвращенные NSDataDetector будет иметь один из типов детекторов данных, в зависимости от типа результата, возвращаемого, и у них будут соответствующие свойства. Например, результаты типа NSTextCheckingTypeDate имейте a date, timeZone, и duration; результаты типа NSTextCheckingTypeLink имейте a URL, и т.д.
Примеры
Следующее показывает несколько дипломированных примеров использования NSDataDetector класс.
Этот фрагмент кода создает детектор данных, который найдет ссылки URL и телефонные номера. Если с ошибкой встретились, она возвращается в error.
NSError *error = NULL;NSDataDetector *detector = [NSDataDetector dataDetectorWithTypes:NSTextCheckingTypeLink|NSTextCheckingTypePhoneNumbererror:&error];
Как только экземпляр детектора данных создается, можно определить число соответствий в диапазоне строки с помощью NSRegularExpression метод numberOfMatchesInString:options:range:.
NSUInteger numberOfMatches = [detector numberOfMatchesInString:stringoptions:0range:NSMakeRange(0, [string length])];
Если Вы интересуетесь только полным диапазоном первого соответствия, numberOfMatchesInString:options:range: метод обеспечивает его. Однако с детекторами данных, это менее вероятно, чем с регулярными выражениями, потому что клиенты обычно будут интересоваться дополнительной информацией также.
Доступная дополнительная информация зависит от типа результата. Для результатов типа NSTextCheckingTypeLink, это URL свойство, которое значительно. Для результатов типа NSTextCheckingTypePhoneNumber , это phoneNumber свойство вместо этого.
matchesInString:options:range: метод подобен firstMatchInString:options:range:, за исключением того, что это возвращает все соответствия, а не только первое. Следующий фрагмент кода находит все соответствия для ссылок и телефонных номеров в строке.
NSArray *matches = [detector matchesInString:stringoptions:0range:NSMakeRange(0, [string length])];for (NSTextCheckingResult *match in matches) {NSRange matchRange = [match range];if ([match resultType] == NSTextCheckingTypeLink) {NSURL *url = [match URL];} else if ([match resultType] == NSTextCheckingTypePhoneNumber) {NSString *phoneNumber = [match phoneNumber];}}
NSRegularExpression Блочный перечислитель объекта является самым общим и гибким из методов сопоставления. Это позволяет Вам выполнять итерации через соответствия в строке, выполняя произвольные действия с каждым, как указано кодом в Блоке, и останавливаться отчасти через при желании. В следующем фрагменте кода останавливается итерация после определенного числа соответствий были найдены.
__block NSUInteger count = 0;[detector enumerateMatchesInString:stringoptions:0range:NSMakeRange(0, [string length])usingBlock:^(NSTextCheckingResult *match, NSMatchingFlags flags, BOOL *stop){NSRange matchRange = [match range];if ([match resultType] == NSTextCheckingTypeLink) {NSURL *url = [match URL];} else if ([match resultType] == NSTextCheckingTypePhoneNumber) {NSString *phoneNumber = [match phoneNumber];}if (++count >= 100) *stop = YES;}];
-
Создает и возвращает новый экземпляр детектора данных.
Объявление
Objective C
+ (NSDataDetector *)dataDetectorWithTypes:(NSTextCheckingTypes)checkingTypeserror:(NSError **)errorПараметры
checkingTypesТипы проверки. Поддерживаемые типы проверки являются подмножеством типов, указанных в
NSTextCheckingType. Те константы могут быть объединены с помощью оператора C-битового-«ИЛИ».errorПараметр, если ошибка происходит во время инициализации, содержащий ошибку, с которой встречаются.
Возвращаемое значение
Возвращает недавно детектор инициализируемых данных. Если с ошибкой встретились возвраты
nil, иerrorсодержит ошибку.Обсуждение
В настоящее время, поддерживаемые детекторы данных
checkingTypes:NSTextCheckingTypeDate,NSTextCheckingTypeAddress,NSTextCheckingTypeLink,NSTextCheckingTypePhoneNumber, иNSTextCheckingTypeTransitInformation.Оператор импорта
Objective C
@import Foundation;Доступность
Доступный в iOS 4.0 и позже.
См. также
-
init (types:error:) - initWithTypes:error:Определяемый инициализаторИнициализирует и возвращает экземпляр детектора данных.
Объявление
Swift
init?(typescheckingTypes: NSTextCheckingTypes, errorerror: NSErrorPointer)Objective C
- (instancetype)initWithTypes:(NSTextCheckingTypes)checkingTypeserror:(NSError **)errorПараметры
checkingTypesТипы проверки. Поддерживаемые типы проверки являются подмножеством типов
NSTextCheckingType. Те константы могут быть объединены с помощью оператора C-битового-«ИЛИ».errorПараметр, если ошибка происходит во время инициализации, содержащий ошибку, с которой встречаются.
Возвращаемое значение
Возвращает недавно детектор инициализируемых данных. Если с ошибкой встретились возвраты
nil, иerrorсодержит ошибку.Обсуждение
В настоящее время, поддерживаемые детекторы данных
checkingTypes:NSTextCheckingTypeDate,NSTextCheckingTypeAddress,NSTextCheckingTypeLink,NSTextCheckingTypePhoneNumber, иNSTextCheckingTypeTransitInformation.Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в iOS 4.0 и позже.
-
checkingTypesСвойствоВозвращает типы проверки для этого детектора данных. (только для чтения)
Объявление
Swift
var checkingTypes: NSTextCheckingTypes { get }Objective C
@property(readonly) NSTextCheckingTypes checkingTypesОбсуждение
Поддерживаемое подмножество проверки типов указано в
NSTextCheckingType. Те константы могут быть объединены с помощью оператора C-битового-«ИЛИ».В настоящее время, поддерживаемые детекторы данных
checkingTypes:NSTextCheckingTypeDate,NSTextCheckingTypeAddress,NSTextCheckingTypeLink,NSTextCheckingTypePhoneNumber, иNSTextCheckingTypeTransitInformation.Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в iOS 4.0 и позже.
