NSURLクラス

2010. 10. 22
●概要

NSURLクラスは、URLと参照するリソースを処理する方法を提供します。

NSURLオブジェクトは、RFC 1808、1738、2732で指定されているURLを解釈します。

RFC 1808が推奨する、RFC 1808に準拠しているかどうかの判別法は、resourceSpecifierの最初の二文字が@"//"であるかどうかです。

NSURLオブジェクトはファイルの参照に使用することができ、この方法が推奨されています。

ApplicationKitオブジェクトは一般的に、ファイルからのデータの読み込みやファイルへのデータの書き込みを行うメソッドを持っていますが、NSURLオブジェクトがファイル参照のパス名を代わりに受け入れます。

NSWorkspaceは、URLで指定されている場所を開くopenURL:を提供します。

NSStringが提供するstringWithContentsOfURL:やNSDataが提供するdataWithContentsOfURL:で、URLのコンテンツを取得します。

NSURLオブジェクトは二つの部分で構成されており、潜在的にnilベースのURLとベースURLに関連して決定される文字列から成ります。

NSURLオブジェクトのベースを除いた完全に決定された文字列は絶対的なもので、他の全ては相対的なものです。

NSURLクラスは、NSURLオブジェクトを新たに生成する際に的確なパスを渡さないと失敗します。
(パスはRFC 2396を満たす必要があります)

例えば、空白文字や高ビット文字を含む文字列は成功しません。

NSURLオブジェクトの生成に失敗すると生成メソッドはnilを返すので、対応する処理を準備する必要があります。

ファイルシステムパスを使ってNSURLオブジェクトを生成する際、fileURLWithPath:またはinitFileURLWithPath:を使うことができ、URLパスとファイルシステムパスの微妙な差異を処理できます。

不正なパス文字列への耐性を持たせたい場合は、Core Foundationフレームワークの提供する文字列を仕上げる関数を使用する必要があります。

NSURLConnectionとNSURLDownloadクラスには、バックグラウンドでURLリソースを読み込む有用なメソッドが定義されています。

詳細は『URL Loading System Programming Guide』を参照してください。

また、アプリケーションキットフレームワーク内のNSURL追加リファレンスに、ペーストボードをサポートする追加メソッドがあります。

NSURLには『toll-free bridged』の対象としてCore FoundationのCFURL Referenceがあります。

これはFoudationオブジェクトを橋渡ししてCore Foundationの型に変換し、関数やメソッドで呼び出せることを意味します。

したがってAPIでNSURL *パラメータを参照する際、CFURLRefに渡し、APIはCFURLRefパラメータとして参照でき、(コンパイラの警告を抑えるために型変換をして)NSURLインスタンスにポインタを渡すこともできます。

この方法はまた、実際のNSURLのサブクラスにも適用されます。

型変換に関する詳細は『toll-free bridging』を参照してください。



●タスク

●NSURLの生成

– initWithScheme:host:path:
+ URLWithString:
– initWithString:
+ URLWithString:relativeToURL:
– initWithString:relativeToURL:
+ fileURLWithPath:isDirectory:
– initFileURLWithPath:isDirectory:
+ fileURLWithPath:
– initFileURLWithPath:
+ fileURLWithPathComponents:
+ URLByResolvingBookmarkData:options:relativeToURL:bookmarkDataIsStale:error:
– initByResolvingBookmarkData:options:relativeToURL:bookmarkDataIsStale:error:

●オブジェクトの識別と比較

– isEqual:

●NSURLの照会

– checkResourceIsReachableAndReturnError:
– isFileReferenceURL
– isFileURL

●URLの部品へのアクセス

– absoluteString
– absoluteURL
– baseURL
– fragment
– host
– lastPathComponent
– parameterString
– password
– path
– pathComponents
– pathExtension
– port
– query
– relativePath
– relativeString
– resourceSpecifier
– scheme
– standardizedURL
– user

●ファイルURLの変更と変換

– filePathURL
– fileReferenceURL
– URLByAppendingPathComponent:
– URLByAppendingPathExtension:
– URLByDeletingLastPathComponent
– URLByDeletingPathExtension
– URLByResolvingSymlinksInPath
– URLByStandardizingPath

●ブックマークデータの処理

+ bookmarkDataWithContentsOfURL:error:
– bookmarkDataWithOptions:includingResourceValuesForKeys:relativeToURL:error:
+ writeBookmarkData:toURL:options:error:

●ファイルシステムリソースプロパティの取得と設定

– getResourceValue:forKey:error:
– resourceValuesForKeys:error:
– setResourceValue:forKey:error:
+ resourceValuesForKeys:fromBookmarkData:
– setResourceValues:error:



●クラスメソッド

fileURLWithPath:

+ (id)fileURLWithPath:(NSString *)path

指定したパスからファイルURLのNSURLオブジェクトを新規に作成し、初期化して返します。

このメソッドは、pathがスラッシュ(/)で終わるディレクトリであることを仮定しています。

pathがスラッシュで終わっていない場合、pathがファイルシステムにあるファイルまたはディレクトリかどうかをメソッドが調べます。

pathがファイルシステムのディレクトリに存在する場合、メソッドは末尾にスラッシュを付加します。

pathがファイルシステムに存在しない場合、ファイルを表しているものと仮定して、メソッドは末尾にスラッシュを付加しません。

代替案として、fileURLWithPath:isDirectory:を使って、返されるNSURLオブジェクトがファイルまたはディレクトリを表すかどうかを明示的にすることも検討してください。

path:NSURLオブジェクトで表すパスを指定します。
指定するパスは、有効なシステムパスにする必要があります。
パスがチルダ(~)で始まる場合は、最初にstringByExpandingTildeInPathで展開する必要があります。
このパラメータにnilを渡すと例外が発生します。


URLWithString:

+ (id)URLWithString:(NSString *)URLString

指定した文字列で初期化したNSURLオブジェクトを生成して返します。

指定した文字列が異形の場合はnilを返します。

このメソッドの引数URLStringは、パーセントエスケープコード( : 、 / 、 % 、 # 、 ; 、 @ )を含むことを必須としています。

注:パーセントエスケープコードは事前にUTF-8に変換しておく必要が有ります。

URLString:NSURLオブジェクトとして初期化する文字列を指定します。
RFC 2396に準拠している必要があります。
このメソッドの引数URLStringは、RFC 1738と1808に従います。



●インスタンスメソッド

absoluteString

- (NSString *)absoluteString

レシーバから純粋なURLの文字列を返します。

戻り値は純粋なURLの文字列で、RFC 1808の規定に基づいてレシーバの文字列を生成します。

取得したNSStringオブジェクトのURLは、UITextFieldクラスのtextプロパティでテキストフィールドに表示します。

Back/Forwardボタンの有効/無効の更新は、ウェブビューの履歴から進めるか戻れるかをUIWebViewクラスのcanGoBack/canGoForwardメソッドで判別し、その結果をUIBarItemクラス(UIBarButtonItemクラスの親クラス)のenabledプロパティで反映します。


URLByAppendingPathComponent:

- (NSURL *)URLByAppendingPathComponent:(NSString *)pathComponent

元のURLにパス要素を追加することによって作成された新しいURLを返します。

戻り値はpathComponentが追加された新しいURLです。

元のURLが空文字列でない限り、元のURLがスラッシュで終わっていなく、pathComponentがスラッシュで始まっていない場合は、返されるURLには2つのパスの間にスラッシュが挿入されます。

pathComponent:URLに追加するパス要素を指定します。



●定数



参考文献

NSURL Class Reference






SoundSport Pulse wireless headphones
0 Comments
Leave a comment
管理者にだけ表示を許可する
Top
0 Trackbacks
Top
Calendar
04 | 2017/05 | 06
Sun Mon Tue Wed Thu Fri Sat
- 1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31 - - -
Recent Articles
iTunes


Swift
Categories
Tips
Profile

水月杏香

Author:水月杏香
永遠の初心者プログラマ。

Wish List
WACOM


ARC
Technical Q&A
情報プロパティリストキー
Start Developing iOS Apps Today
BOSE

SoundSport Pulse wireless headphones
Reference
NSApplicationDelegateプロトコル
NSArrayクラス
NSAutoreleasePoolクラス
NSBundleクラス
NSBundle UIKit追加分
NSCalendarクラス
NSCoderクラス
NSCodingプロトコル
NSCopyingプロトコル
NSDataクラス
NSDateクラス
NSDateFormatterクラス
NSDictionaryクラス
NSEntityDescriptionクラス
NSEnumeratorクラス
NSErrorクラス
NSExceptionクラス
NSFetchRequestクラス
NSFileHandleクラス
NSFileManagerクラス
NSIndexPathクラス
NSIndexPath UIKit追加分
NSKeyedArchiverクラス
NSKeyedUnarchiverクラス
NSKeyValueCodingプロトコル
NSLocaleクラス
NSManagedObjectクラス
NSManagedObjectContextクラス
NSManagedObjectModelクラス
NSMutableArrayクラス
NSMutableCopyingプロトコル
NSMutableDictionaryクラス
NSMutableSetクラス
NSNotificationクラス
NSNotificationCenterクラス
NSNullクラス
NSNumberクラス
NSObjectクラス
NSObject UIKit追加分
NSObjectプロトコル
NSPersistentStoreクラス
NSPersistentStoreCoordinatorクラス
NSPredicateクラス
NSPropertyListSerializationクラス
NSRunLoopクラス
NSSetクラス
NSStringクラス
NSString UIKit追加分
NSTimerクラス
NSTimeZoneクラス
NSURLクラス
NSURLProtectionSpaceクラス
NSURLRequestクラス
NSUserDefaultsクラス
NSValueクラス

UIActionSheetクラス
UIActionSheetDelegateプロトコル
UIActivityIndicatorViewクラス
UIAlertViewクラス
UIAlertViewDelegateプロトコル
UIApplicationクラス
UIApplicationDelegateプロトコル
UIBarButtonItemクラス
UIBarItemクラス
UIButtonクラス
UIColorクラス
UIControlクラス
UIDatePickerクラス
UIDeviceクラス
UIEventクラス
UIFontクラス
UIGestureRecognizerクラス
UIImageクラス
UIImageViewクラス
UIKit Function
UILabelクラス
UINavigationControllerクラス
UINavigationItemクラス
UIPickerViewクラス
UIPickerViewDataSourceプロトコル
UIPickerViewDelegateプロトコル
UIPinchGestureRecognizerクラス
UIResponderクラス
UIScreenクラス
UIScrollViewクラス
UISearchBarクラス
UISearchBarDelegateプロトコル
UISegmentedControlクラス
UISliderクラス
UISwipeGestureRecognizerクラス
UISwitchクラス
UITableViewクラス
UITableViewCellクラス
UITableViewControllerクラス
UITableViewDataSourceプロトコル
UITableViewDelegateプロトコル
UITapGestureRecognizerクラス
UITextFieldクラス
UITextFieldDelegateプロトコル
UITextInputTraitsプロトコル
UITextViewクラス
UITextViewDelegateプロトコル
UIToolbarクラス
UITouchクラス
UIViewクラス
UIViewControllerクラス
UIWebViewクラス
UIWebViewDelegateプロトコル
UIWindowクラス

AVAudioPlayerクラス
AVAudioPlayerDelegateプロトコル

CADisplayLinkクラス
CAEAGLLayerクラス
CALayerクラス

CGAffineTransform
CGBitmapContext
CGColor
CGColorSpace
CGContext
CGGeometry
CGImage
CGPath

EAGLContextクラス
EAGLDrawableプロトコル

Foundation Constants
Foundation Data Types
Foundation Functions

MPMediaItemクラス
MPMediaItemArtworkクラス
MPMediaPlaylistクラス
MPMediaPropertyPredicateクラス
MPMediaQueryクラス
MPMusicPlayerControllerクラス

Randomization Services

System Sound Services
Amazon


OpenGL ES
SQLite
Monthly Archives
Recent Comments
Recent TrackBacks
RSS Link
Visitors
QR Code
QR