NSURLをNSStringに変換する


336

ユーザーが組み込みのアプリ画像またはiphoneフォトライブラリから画像を選択できるアプリを持っています。をNSString保存するプロパティを持つオブジェクト機会を使用しますimagePath

組み込みアプリの画像の場合は、ファイル名をNSStringの保存として取得します[occasion imagePath]。しかし、ユーザーがフォトライブラリから画像を選択する2番目のケースでは、] に保存できるようにNSURL変換したい画像を取得NSString[occasion imagePathます。

それは、変換することができるNSURLNSString

回答:



132

純粋な文字列に興味がある場合:

[myUrl absoluteString];

URLで表されるパスに興味がある場合(NSFileManagerたとえば、メソッドで使用する場合):

[myUrl path];

こんにちは、ありがとうございます。保存したひずみからイメージを読み込もうとし[myUril path];ているので、absoluteStringではなくパスを使用したときにNSFileManagerを使用することについてあなたが言ったことに本当に興味asset.jpgがあります。画像をUIImageインスタンスにロードしますか?
アリ

こんにちは。もちろん、ファイル名から実際のファイルシステムパスを取得するには、ファイルが格納されている場所を把握し、NSStringのstringByAppendingPathComponent:を使用してそれらを作成することにより、フルパス(ディレクトリ+ファイル名)を作成する必要があります。このルールの唯一の例外は、画像がApp Bundleに保存されていることを確認します。この場合は、完全な処理を行う[UIImage imageNamed: "name"]呼び出しを使用できます。ただし、それ以外の場合は、完全パスを指定する必要があります。
viggio24

こんにちは、お返事ありがとうございます。NSString に変換した後assets-library://asset/asset.JPG?id=1000000001&ext=JPGの結果を変換して保存したこのNSString を使用して画像をUIImageにロードする方法については、まだ混乱しています[myUrl absoluteString]。ここで私はこの点についてこの質問をしましたが、答えはありませんでした。あなたがそれに答えることができる場合、私は[それをいただければと思いますstackoverflow.com/questions/8085267/...
アリ

2
はい、NSFileManagerで使用する場合は、myUrl.absoluteStringではなくmyUrl.pathを使用する必要があります。Viggo24に感謝します。
flypig

assets-libraryURLではなく、URL があるためfile、と互換性がありませんNSFileManager。このようなURLへのアクセスは、によって厳密に制御されALAssetsLibraryます。
Mike Abdullah

46

Swiftでこれを試してください:

var urlString = myUrl.absoluteString

Objective-C:

NSString *urlString = [myURL absoluteString];

NSString * urlString = [myURL absoluteString]を使用しました。しかし、私はこのエラーに遭遇し、xcodeがクラッシュしました。- [__ NSCFString absoluteString]:インスタンス0x791a18e0に送られ、認識されないセレクター
Võ舞チン

@VõMaiTrinh myURLは、NSStringクラスのオブジェクトであることを意味します。NSStringにはabsoluteStringメソッドがないため、クラッシュが発生します。
ベリリウム

17

迅速な更新:

var myUrlStr : String = myUrl.absoluteString

10
StringSwiftは型推論を使用するため、省略できます。
Salavat Khanov 2014

実際に省略してStringください。Swift設計ガイドラインでは、冗長コードをできる限り少なくしようとしています。
trueを返す

1

私はこれだけで戦ったが、このアップデートは機能しなかった。

これは最終的にSwiftで行われました:

let myUrlStr : String = myUrl!.relativePath!

1

どの方法でも使用できます

NSString *string=[NSString stringWithFormat:@"%@",url1];

または

NSString *str=[url1 absoluteString];

NSLog(@"string :: %@",string);

文字列:: file:///var/containers/Bundle/Application/E2D7570B-D5A6-45A0-8EAAA1F7476071FE/RemoDuplicateMedia.app/loading_circle_animation.gif

NSLog(@"str :: %@", str);

str :: file:///var/containers/Bundle/Application/E2D7570B-D5A6-45A0-8EAA-A1F7476071FE/RemoDuplicateMedia.app/loading_circle_animation.gif


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.