Bir NSURL'yi NSString'e dönüştürme


336

Kullanıcının yerleşik uygulama görüntülerinden veya iphone fotoğraf kütüphanesinden bir görüntü seçebileceği bir uygulamam var. NSStringKaydetmek için bir özelliği olan bir nesne Sebep kullanın imagePath.

Şimdi yerleşik uygulama görüntüleri durumunda ben dosya adı almak NSStringbir tasarruf olarak [occasion imagePath]. Ancak kullanıcının fotoğraf kitaplığından bir görüntü seçtiği 2. durumda, bunu kaydetmek NSURLiçin bir dönüştürmek istediğim bir ].NSString[occasion imagePath

Kullanıcıların dönüşüm mümkün mü NSURLbir etmek NSString?

Yanıtlar:


682

Hedef-C'de:

NSString *myString = myURL.absoluteString;

Swift'te:

var myString = myURL.absoluteString

Dokümanlarda daha fazla bilgi :


132

Saf dize ile ilgileniyorsanız:

[myUrl absoluteString];

URL ile gösterilen yolla ilgileniyorsanız (ve NSFileManagerörneğin yöntemlerle kullanılacaksa ):

[myUrl path];

Merhaba, Cevabınız için teşekkürler. Görüntüyü kaydettiğim straing'ten yüklemeye çalıştığım için, NSFileManager'ı kullanma hakkında bahsettiğiniz şeyle gerçekten ilgileniyorum [myUril path];. AbsoluteString yerine yolu kullandığımda bana bir isim verdi asset.jpg. UIImage örneğine görüntü yüklenir mi?
Ali

Selam. Tabii ki dosya adından gerçek bir dosya sistemi yolu elde etmek için dosyanın nerede saklandığını bilmeniz ve sonra NSString'in stringByAppendingPathComponent'i kullanarak bunları oluşturarak tam yolu (dizin + dosya adı) oluşturmanız gerekir: Bu kuralın tek istisnası görüntünün uygulama paketinde saklandığını bildiğinizde, bu durumda sizin için tam işi yapan [UIImage imageNamed: "name"] çağrısını kullanabilirsiniz. Ancak diğer durumlarda tam yolunuzu belirtmeniz gerekir.
viggio24

Merhaba, Cevabınız için tekrar teşekkürler. Ben hala bir NSString assets-library://asset/asset.JPG?id=1000000001&ext=JPGdönüştürdükten sonra sonucu dönüştürerek kaydedilen bu NSString kullanarak bir UIImage görüntü yüklemek için kafam karıştı [myUrl absoluteString]. Burada bu konuda bu soruyu yaptım ama cevap alamadım. Eğer cevap verebilirseniz çok memnun oluruz [ stackoverflow.com/questions/8085267/…
Ali

2
evet, NSFileManager ile kullanmak istediğinizde myUrl.absoluteString yerine myUrl.path kullanmalıyız, teşekkürler Viggo24 !!
flypig

Bir assets-libraryURL yerine URL'niz olduğundan, URL fileile uyumsuz NSFileManager. Bu tür URL'lere erişim kesinlikle tarafından denetlenir ALAssetsLibrary.
Mike Abdullah

46

Swift'te şunu deneyin:

var urlString = myUrl.absoluteString

Objective-C:

NSString *urlString = [myURL absoluteString];

NSString kullandım * urlString = [myURL absoluteString]; Ama bu hatayla karşılaştım ve xcode çöktü. - [__ NSCFString absoluteString]: tanınmayan seçici 0x791a18e0 örneğine gönderildi
Võ Mai Trinh

@ VõMaiTrinh sizin myURLNSString sınıfının bir nesnesidir. NSString'in absoluteStringyöntemi olmadığı için çökmeye neden olur.
berilyum

17

Hızlı güncelleme:

var myUrlStr : String = myUrl.absoluteString

10
StringSwift tür çıkarımı kullandığı için atlayabilirsiniz .
Salavat Khanov

Aslında gerektiğini ihmal StringSwift Tasarım Kuralları mümkün olduğunca az gereksiz kodu olarak elde etmek deneyin -.
gerçek

1

Sadece bu şeyle savaştım ve bu güncelleme işe yaramadı.

Bu sonunda Swift'te yaptı:

let myUrlStr : String = myUrl!.relativePath!

1

Herhangi bir şekilde kullanabilirsiniz

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

veya

NSString *str=[url1 absoluteString];

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

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

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

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


0

Swift'te: - var str_url = yourUrl.absoluteString

Dizede bir url ile sonuçlanır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.