แปลง NSURL เป็น NSString


336

ฉันมีแอพที่ผู้ใช้สามารถเลือกรูปภาพได้จากรูปภาพแอพในตัวหรือจากคลังรูปภาพ iphone ผมใช้โอกาสวัตถุที่มีคุณสมบัติการบันทึกNSStringimagePath

ตอนนี้ในกรณีของภาพในตัวแอพพลิเคฉันจะได้รับชื่อไฟล์เป็นบันทึกในNSString [occasion imagePath]แต่ในกรณีที่ 2 ที่ผู้ใช้เลือกรูปแบบคลังภาพฉันได้รับสิ่งNSURLที่ฉันต้องการแปลงเป็นNSStringเพื่อให้สามารถบันทึกไว้ใน[occasion imagePath]

มันเป็นไปได้ที่จะแปลงNSURLไปยังNSString?

คำตอบ:



132

หากคุณสนใจสตริงบริสุทธิ์:

[myUrl absoluteString];

หากคุณสนใจเส้นทางที่ URL แสดงแทน (และใช้กับNSFileManagerวิธีการต่างๆ):

[myUrl path];

สวัสดี Thanx สำหรับคำตอบของคุณ ขณะที่ผมกำลังพยายามที่จะโหลดภาพจากที่ straing ฉันบันทึกฉันสนใจจริงๆในสิ่งที่คุณกล่าวถึงเกี่ยวกับการใช้ NSFileManager กับ[myUril path];ตอนที่ผมใช้เส้นทางแทน absoluteString มันทำให้ผมชื่อasset.jpgคุณอาจจะอ้อนวอน eelaborate เพิ่มเติมวิธีการใช้วิธีนี้ โหลดภาพลงในอินสแตนซ์ UIImage หรือไม่?
อาลี

สวัสดี แน่นอนจากชื่อไฟล์ที่จะได้รับเส้นทางของระบบไฟล์จริงที่คุณต้องรู้ว่าไฟล์ถูกเก็บไว้ที่ไหนแล้วสร้างเส้นทางแบบเต็ม (ไดเรกทอรี + ชื่อไฟล์) โดยการเขียนพวกเขาโดยใช้สตริงของ NSString stringByAppendingPathComponent:. ทราบว่ารูปภาพถูกเก็บไว้ในชุดแอพในกรณีนี้คุณสามารถใช้การโทร [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ดังกล่าวจะถูกควบคุมอย่างเคร่งครัดโดย
Mike Abdullah

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

10
คุณสามารถละเว้นได้Stringเนื่องจาก Swift ใช้การอนุมานประเภท
Salavat Khanov

คุณควรละเว้นString- แนวทางการออกแบบ Swift พยายามที่จะบรรลุรหัสซ้ำซ้อนน้อยที่สุดเท่าที่จะทำได้
ส่งคืนจริง

1

ฉันเพิ่งต่อสู้กับสิ่งนี้มากและการอัปเดตนี้ไม่ทำงาน

ในที่สุดสิ่งนี้ทำใน Swift:

let myUrlStr : String = myUrl!.relativePath!

1

คุณสามารถใช้วิธีใดก็ได้

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

หรือ

NSString *str=[url1 absoluteString];

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

สตริง :: ไฟล์: ///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.