【问题标题】:Convert an NSURL to an NSString将 NSURL 转换为 NSString
【发布时间】:2011-12-26 07:57:55
【问题描述】:

我有一个应用程序,用户可以在其中从内置应用程序图像或 iphone 照片库中选择图像。我使用具有NSString 属性的对象场合来保存imagePath

现在,对于内置应用程序图像,我确实将文件名作为NSString 保存在[occasion imagePath] 中。但在第二种情况下,用户从照片库中选择图像,我得到一个NSURL,我想将其转换为NSString,以便能够将其保存在[occasion imagePath]。

是否可以将NSURL 转换为NSString

【问题讨论】:

    标签: ios objective-c swift nsstring nsurl


    【解决方案1】:

    在 Objective-C 中:

    NSString *myString = myURL.absoluteString;
    

    在斯威夫特中:

    var myString = myURL.absoluteString
    

    更多信息在docs:

    【讨论】:

      【解决方案2】:

      如果你对纯字符串感兴趣:

      [myUrl absoluteString];

      如果您对 URL 表示的路径感兴趣(例如,与 NSFileManager 方法一起使用):

      [myUrl path];

      【讨论】:

      • 您好,感谢您的回答。当我试图从我保存的应变加载图像时,我真的很感兴趣你提到的使用 NSFileManager 和[myUril path]; 当我使用 path 而不是 absoluteString 它给了我名字asset.jpg 你能详细说明吗更多如何使用它来将图像加载到 UIImage 实例中?
      • 嗨。当然,从文件名获取真正的文件系统路径,您需要知道文件的存储位置,然后通过使用 NSString 的 stringByAppendingPathComponent: 组合它们来创建完整路径(目录 + 文件名)。这条规则的唯一例外是当您知道图像存储在应用程序包中,在这种情况下,您只需使用 [UIImage imageNamed:"name"] 调用即可为您完成全部工作。但在其他情况下,您必须指定完整路径。
      • 您好,再次感谢您的回答。我仍然对如何使用此 NSString assets-library://asset/asset.JPG?id=1000000001&ext=JPG 将图像加载到 UIImage 感到困惑,我在将其转换为 NSString 后将[myUrl absoluteString] 的结果转换为保存。在这里,我在这方面提出了这个问题,但没有得到答案。如果您能回答我将不胜感激 [stackoverflow.com/questions/8085267/…
      • 是的,当你想与 NSFileManager 一起使用时,我们应该使用 myUrl.path 而不是 myUrl.absoluteString,谢谢 Viggo24!!
      • 由于您有一个assets-library URL,而不是file,它与NSFileManager 不兼容。对此类 URL 的访问受到 ALAssetsLibrary 的严格控制。
      【解决方案3】:

      在 Swift 中试试这个:

      var urlString = myUrl.absoluteString
      

      目标-C:

      NSString *urlString = [myURL absoluteString];
      

      【讨论】:

      • 我使用了 NSString *urlString = [myURL absoluteString];但是我遇到了这个错误,xcode 崩溃了。 -[__NSCFString absoluteString]:无法识别的选择器发送到实例 0x791a18e0
      • @VõMaiTrinh 这意味着您的 myURL 是 NSString 类的对象。由于 NSString 没有 absoluteString 方法,所以它会导致崩溃。
      【解决方案4】:

      快速更新:

      var myUrlStr : String = myUrl.absoluteString
      

      【讨论】:

      • 你可以省略String,因为 Swift 使用类型推断。
      • 你实际上应该省略String - Swift 设计指南试图实现尽可能少的冗余代码。
      【解决方案5】:

      我刚刚和这个东西打了一架,这个更新没有用。

      这最终在 Swift 中实现了:

      let myUrlStr : String = myUrl!.relativePath!
      

      【讨论】:

        【解决方案6】:

        您可以使用任何一种方式

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

        NSString *str=[url1 absoluteString];
        
        NSLog(@"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

        【讨论】:

          【解决方案7】:

          在 Swift 中:- var str_url = yourUrl.absoluteString

          它会产生一个字符串中的url。

          【讨论】:

          猜你喜欢
          • 2012-02-10
          • 1970-01-01
          • 2012-04-05
          • 2016-04-07
          • 1970-01-01
          • 2014-10-25
          • 1970-01-01
          • 2016-07-28
          • 1970-01-01
          相关资源
          最近更新 更多