INDEX>Foundation>NSDataDetector
解説
編集時バージョン iOS7.0
apple(mac)
apple(iOS)
継承 | NSObject |
準拠 | NSObject (NSObject) |
フレームワーク | /System/Library/Frameworks/Foundation.framework |
使用可能 | OS X 10.7以降 |
iOS 4.0以降 | |
定義 | NSRegularExpression.h |
作成
データ検出(NSDataDetector)オブジェクトの作成は(+ dataDetectorWithTypes:error:)メソッドを使用します。allocで作成した後(– initWithTypes:error:)メソッドで初期化することもできます。
iOS5.1では下記のタイプは、設定はされていますが作成できないようです。(オブジェクトの作成ができず、例外が投げられます。)
NSTextCheckingTypeOrthography
NSTextCheckingTypeSpelling
NSTextCheckingTypeGrammar
NSTextCheckingTypeQuote
NSTextCheckingTypeDash
NSTextCheckingTypeReplacement
NSTextCheckingTypeCorrection
文字列から日付を検出するサンプル
#pragma mark NSDataDetector date -(void)method005 { NSString *aString = @"Today is 2013年8月15日"; NSError *error = nil; NSDataDetector *aDetector = [NSDataDetector dataDetectorWithTypes:NSTextCheckingTypeDate error:&error]; NSArray *resultArray = [aDetector matchesInString:aString options:0 range:NSMakeRange(0, [aString length])]; [resultArray enumerateObjectsWithOptions:NSEnumerationConcurrent //並列 usingBlock:^(id obj,NSUInteger idx,BOOL *stop){ if (obj) { NSTextCheckingResult *tcResult = (NSTextCheckingResult *)obj; NSLog(@"%s %@ %u-%u",__FUNCTION__,[obj date],tcResult.range.location,tcResult.range.length ); } return; }]; //=>2013-08-15 03:00:00 +0000 9-10 }
文字列からURLを検出するサンプル
#pragma mark NSDataDetector dataDetectorWithTypes URL -(void)method002 { NSString *aString = @"My site's URL is http://d.hatena.ne.jp/jjj777/."; NSDataDetector *aDetector = [NSDataDetector dataDetectorWithTypes:NSTextCheckingTypeLink error:nil]; NSArray *matches = [aDetector matchesInString:aString options:0 range:NSMakeRange(0, [aString length]) ]; for (NSTextCheckingResult *match in matches) { if ([match resultType] == NSTextCheckingTypeLink) { NSString *matchingString = [match description]; NSLog(@"found URL: %@", matchingString); } } }
チェックタイプの取得
データ検出オブジェクトの検出タイプを取得するには(checkingTypes)プロパティを参照します。(読み取り専用)
iOS5.1でサポートされているタイプは下記の通りです。
NSTextCheckingTypeDate
NSTextCheckingTypeAddress
NSTextCheckingTypeLink
NSTextCheckingTypePhoneNumber
NSTextCheckingTypeTransitInformation
メソッド
チェックタイプを取得
checkingTypes property