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

285

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

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

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

Теги:
nsurl
nsstring

6 ответов

600
Лучший ответ
NSString *myString = myURL.absoluteString;

Дополнительная информация в docs:

  • 0
    Thanx. Я не знаю, как я пропустил это, когда я читаю документы.
  • 27
    @ Али, вероятно, из-за плохого наименования
127

Если вас интересует чистая строка:

[myUrl absoluteString];

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

[myUrl path];
  • 0
    Привет, спасибо за твой ответ. Поскольку я пытаюсь загрузить изображение из сохраненного мною слоя, мне очень интересно, что вы упомянули об использовании NSFileManager с [myUril path]; Когда я использовал путь вместо absoluteString, он дал мне имя asset.jpg Не могли бы вы рассказать больше о том, как использовать это для загрузки изображения в экземпляр UIImage?
  • 0
    Привет. Конечно, по имени файла, чтобы получить реальный путь к файловой системе, вам нужно знать, где хранится файл, а затем создать полный путь (каталог + имя файла), составив их с помощью stringByAppendingPathComponent NSString:. Единственное исключение из этого правила - это когда вы Знайте, что изображение хранится в комплекте приложений, в этом случае вы можете просто использовать вызов [UIImage imageNamed: "name"], который сделает всю работу за вас. Но в других случаях вы должны указать свой полный путь.
Показать ещё 6 комментариев
39

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

var urlString = myUrl.absoluteString

Objective-C:

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

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

var myUrlStr : String = myUrl.absoluteString
  • 10
    Вы можете опустить String так как Swift использует вывод типа.
  • 0
    Вы на самом деле должны опустить String - Руководство по проектированию Swift старается создать как можно меньше избыточного кода.
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:: файл:///var/containers/Bundle/Application/E2D7570B-D5A6-45A0-8EAA-A1F7476071FE/RemoDuplicateMedia.app/loading_circle_animation.gif

1

Я просто сражался с этим, и это обновление не сработало.

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

let myUrlStr : String = myUrl!.relativePath!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню