NSDataDetector
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|NSTextCheckingTypePhoneNumber
error:&error];
Как только экземпляр детектора данных создается, можно определить число соответствий в диапазоне строки с помощью NSRegularExpression
метод numberOfMatchesInString:options:range:
.
NSUInteger numberOfMatches = [detector numberOfMatchesInString:string
options:0
range:NSMakeRange(0, [string length])];
Если Вы интересуетесь только полным диапазоном первого соответствия, numberOfMatchesInString:options:range:
метод обеспечивает его. Однако с детекторами данных, это менее вероятно, чем с регулярными выражениями, потому что клиенты обычно будут интересоваться дополнительной информацией также.
Доступная дополнительная информация зависит от типа результата. Для результатов типа NSTextCheckingTypeLink
, это URL
свойство, которое значительно. Для результатов типа NSTextCheckingTypePhoneNumber
, это phoneNumber
свойство вместо этого.
matchesInString:options:range:
метод подобен firstMatchInString:options:range:
, за исключением того, что это возвращает все соответствия, а не только первое. Следующий фрагмент кода находит все соответствия для ссылок и телефонных номеров в строке.
NSArray *matches = [detector matchesInString:string
options:0
range: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:string
options:0
range: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;
}];
Наследование
-
NSObject
-
NSRegularExpression
-
NSDataDetector
-
NSObject
-
NSRegularExpression
-
NSDataDetector
Соответствует
-
AnyObject
-
CVarArgType
-
Сопоставимый
-
Hashable
-
NSCoding
-
NSCopying
-
NSObjectProtocol
-
Печатаемый
-
NSCoding
-
NSCopying
-
NSObject
Оператор импорта
Swift
import Foundation
Objective C
@import Foundation;
Доступность
Доступный в OS X v10.7 и позже.
-
Создает и возвращает новый экземпляр детектора данных.
Объявление
Objective C
+ (NSDataDetector *)dataDetectorWithTypes:(NSTextCheckingTypes)
checkingTypes
error:(NSError **)error
Параметры
checkingTypes
Типы проверки. Поддерживаемые типы проверки являются подмножеством типов, указанных в
NSTextCheckingType
. Те константы могут быть объединены с помощью оператора C-битового-«ИЛИ».error
Параметр, если ошибка происходит во время инициализации, содержащий ошибку, с которой встречаются.
Возвращаемое значение
Возвращает недавно детектор инициализируемых данных. Если с ошибкой встретились возвраты
nil
, иerror
содержит ошибку.Обсуждение
В настоящее время, поддерживаемые детекторы данных
checkingTypes
:NSTextCheckingTypeDate
,NSTextCheckingTypeAddress
,NSTextCheckingTypeLink
,NSTextCheckingTypePhoneNumber
, иNSTextCheckingTypeTransitInformation
.Оператор импорта
Objective C
@import Foundation;
Доступность
Доступный в OS X v10.7 и позже.
См. также
-
init (types:error:) - initWithTypes:error:
Определяемый инициализаторИнициализирует и возвращает экземпляр детектора данных.
Объявление
Swift
init?(types
checkingTypes
: NSTextCheckingTypes, errorerror
: NSErrorPointer)Objective C
- (instancetype)initWithTypes:(NSTextCheckingTypes)
checkingTypes
error:(NSError **)error
Параметры
checkingTypes
Типы проверки. Поддерживаемые типы проверки являются подмножеством типов
NSTextCheckingType
. Те константы могут быть объединены с помощью оператора C-битового-«ИЛИ».error
Параметр, если ошибка происходит во время инициализации, содержащий ошибку, с которой встречаются.
Возвращаемое значение
Возвращает недавно детектор инициализируемых данных. Если с ошибкой встретились возвраты
nil
, иerror
содержит ошибку.Обсуждение
В настоящее время, поддерживаемые детекторы данных
checkingTypes
:NSTextCheckingTypeDate
,NSTextCheckingTypeAddress
,NSTextCheckingTypeLink
,NSTextCheckingTypePhoneNumber
, иNSTextCheckingTypeTransitInformation
.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.7 и позже.
-
checkingTypes 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
Доступность
Доступный в OS X v10.7 и позже.