Преобразовать NSURL в NSString

336

У меня есть приложение, в котором пользователь может выбрать изображение из изображений встроенного приложения или из библиотеки фотографий iphone. Я использую объект Occasion, у которого есть NSStringсвойство для сохранения imagePath.

Теперь в случае изображений встроенного приложения я получаю имя файла в NSStringкачестве сохранения в [occasion imagePath]. Но во втором случае, когда пользователь выбирает изображение из библиотеки фотографий, я получаю изображение, NSURLкоторое хочу преобразовать в, NSStringчтобы иметь возможность сохранить его в [occasion imagePath].

Можно ли преобразовать NSURLв NSString?

Али
источник

Ответы:

682

В Objective-C:

NSString *myString = myURL.absoluteString;

В Свифте:

var myString = myURL.absoluteString

Больше информации в документации :

Randall
источник
132

Если вы заинтересованы в чистой строке:

[myUrl absoluteString];

Если вас интересует путь, представленный URL-адресом (и, например, для использования с NSFileManagerметодами):

[myUrl path];
viggio24
источник
Привет, спасибо за твой ответ. Поскольку я пытаюсь загрузить изображение из сохраненного мною стрита, меня действительно интересует то, что вы упомянули об использовании NSFileManager с [myUril path];Когда я использовал path вместо absoluteString, он дал мне имя. asset.jpgНе могли бы вы дать больше подробностей о том, как использовать это для загрузить изображение в экземпляр UIImage?
Али
Здравствуй. Конечно, из имени файла, чтобы получить реальный путь к файловой системе, вам нужно знать, где хранится файл, а затем создать полный путь (каталог + имя файла), составив их с помощью stringByAppendingPathComponent NSString:. Единственное исключение из этого правила - это когда вы Знайте, что изображение хранится в комплекте приложений, в этом случае вы можете просто использовать вызов [UIImage imageNamed: "name"], который сделает всю работу за вас. Но в других случаях вы должны указать свой полный путь.
viggio24
Привет, еще раз спасибо за ваш ответ. Я все еще не понимаю, как загрузить изображение в UIImage, используя эту строку NSString, assets-library://asset/asset.JPG?id=1000000001&ext=JPGкоторую я сохранил, преобразовав результат [myUrl absoluteString]после преобразования его в строку NSString. Здесь я сделал этот вопрос по этому поводу, но не получил ответа. Буду признателен, если вы сможете ответить на него [ stackoverflow.com/questions/8085267/…
Али
2
да, мы должны использовать myUrl.path вместо myUrl.absoluteString, если вы хотите использовать его с NSFileManager, спасибо Viggo24 !!
flypig
Поскольку у вас есть assets-libraryURL, а не fileодин, он несовместим с NSFileManager. Доступ к таким URL строго контролируется ALAssetsLibrary.
Майк Абдулла
46

Попробуйте это в Swift:

var urlString = myUrl.absoluteString

Objective-C:

NSString *urlString = [myURL absoluteString];
бериллий
источник
Я использовал NSString * urlString = [myURL absoluteString]; Но я встретил эту ошибку, и xcode потерпел крах. - [__NSCFString absoluteString]: нераспознанный селектор отправлен в экземпляр 0x791a18e0
Võ Mai Trinh
@ VõMaiTrinh, что означает, что вы myURL- объект класса NSString. Поскольку у NSString нет absoluteStringметода, это приводит к сбою.
бериллий
17

Быстрое обновление:

var myUrlStr : String = myUrl.absoluteString
kmiklas
источник
10
Вы можете опустить, Stringтак как Swift использует вывод типа.
Салават Ханов
Вы на самом деле должны опустить это String- Swift Design Guidelines пытается создать как можно меньше избыточного кода.
верни истину
1

Я просто боролся с этой самой вещью, и это обновление не работало.

В конечном итоге это произошло в Swift:

let myUrlStr : String = myUrl!.relativePath!
Speedz
источник
1

Вы можете использовать любой способ

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

или

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 :: file: ///var/containers/Bundle/Application/E2D7570B-D5A6-45A0-8EAA-A1F7476071FE/RemoDuplicateMedia.app/loading_circle_animation.gif

Шайк Тупел
источник
0

В Swift: - var str_url = yourUrl.absoluteString

Это приведет к URL в строке.

кангна шарма
источник