Перетворити NSURL в NSString


336

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

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

Чи можна перетворити NSURLв NSString?

Відповіді:



132

Якщо вас цікавить чистий рядок:

[myUrl absoluteString];

Якщо вас цікавить шлях, представлений URL-адресою (і, наприклад, для використання з NSFileManagerметодами):

[myUrl path];

Привіт, Дякую за Вашу відповідь. Як я намагаюся завантажити зображення з straing я врятував, я дійсно зацікавлений в тому, що ви згадали про використання NSFileManager з [myUril path];Коли я шляхом замість absoluteString він дав мені ім'я asset.jpgмогло б ви благання eelaborate більше про те , щоб використовувати це завантажити зображення в екземпляр UIImage?
Алі

Привіт. Звичайно, з імені файлу, щоб отримати справжній шлях до файлової системи, вам потрібно знати, де зберігається файл, а потім створити повний шлях (каталог + ім'я файлу), склавши їх за допомогою stringByAppendingPathComponent NSString:. Єдиним винятком з цього правила є, коли ви знайте, що зображення зберігається в пакеті додатків, у цьому випадку ви можете просто скористатися дзвінком [UIImage imageNamed: "ім'я"], який виконує повну роботу для вас. Але в інших випадках вам потрібно вказати повний шлях.
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

Завдання-C:

NSString *urlString = [myURL absoluteString];

Я використовував NSString * urlString = [myURL absolutString]; Але я зустрів цю помилку, і xcode зазнав аварії. - [__ NSCFString AbsolString]: нерозпізнаний селектор, надісланий екземпляру 0x791a18e0
Võ Mai Trinh

@ VõMaiTrinh, що означає, що ваш myURLє об'єктом класу NSString. Оскільки в NSString немає absoluteStringметоду, це призводить до збоїв.
берилій

17

Швидке оновлення:

var myUrlStr : String = myUrl.absoluteString

10
Ви можете пропустити, Stringоскільки Swift використовує умовиводи типу.
Салават Ханов

Ви насправді повинні пропустити String- Керівні принципи дизайну Swift намагаються досягти якомога менше зайвого коду.
повернення справжнього

1

Я просто боровся з цим самим, і це оновлення не працювало.

Зрештою, це зробило у Свіфті:

let myUrlStr : String = myUrl!.relativePath!

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


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.