nsurl转nsdata_关于iOS:如何将带有textEncoding utf-8的NSData转换为NSURL

我想将NSData(textEncoding utf-8)转换为NSURL。

我正在为此编写以下代码,但是从NSData到NSString的转换返回nil。 (可能由于编码类型而异)

NSString *stringFromData = [[NSString alloc] initWithData:myData encoding:NSUTF8StringEncoding]; // stringFromData is nil after execution of this line.

NSURL *url = [[NSURL alloc] initWithString:stringFromData];

因此,在我的情况下,我应该怎么做才能将NSData转换为NSURL。

但是,当我尝试将此数据加载到webview时,它的工作正常。 这是我的代码,用于将该数据加载到webview中。

[self.webView loadData:myData MIMEType:@"application/pdf" textEncodingName:@"utf-8" baseURL:nil]; //PDF is showing in my webview.

但我无法将此NSData转换为NSURL。 我应该使用哪种编码将带有textEncoding utf-8的NSData转换为NSURL?

有什么问题?

我无法将NSData转换为NSURL。

我认为那没用,@"You cant convert this stringdata into NSURL, it will always retrun ni",除非或直到它实际上是一个URL例如 http:www.google.com"

如果它实际上是一个URL(已经存在的URL),那么需要将什么转换为NSURL? 它是一个数据,我想将此数据转换为url。

您正在尝试将表示PDF的数据加载到NSString中。 PDF文件不包含代表文本的UTF-8编码字符,而是包含标题信息,字体,矢量图形和文本的文件。

在我看来,解决您问题的唯一方法是将NSData的源更改为将提供构成URL的UTF-8编码字符的内容。

如果您无法通过其他任何方式获取数据,为什么不检查是否可以从PDF中提取文本数据呢? https://github.com/zachron/pdfiphone

好的...那我该怎么做才能将数据转换为nsurl?

更改您的数据。 它来自哪里?

以此方式思考问题:您拥有一张图像,如果在图像查看器中打开它,则会看到文本" www.thisisanimage.com"。 现在,您正在尝试获取表示图像文件的二进制数据并将其加载到字符串中,并且希望STRING会显示" www.thisisanimage.com"。 得到它?

我的意思是...但是我需要将此数据转换为url。 有什么办法吗?

如果上述方法不起作用,这是另一个可能的解决方案:stackoverflow.com/questions/3384916/

感谢您的努力,但我想实现打开功能(UIDocumentInteraction,以显示可以打开PDF的已安装应用程序的选项)

好的,试试这个:

//Convert data to string

NSString *urlString = [[NSString alloc] initWithData:self encoding:NSUTF8StringEncoding];

//Convert the string to URL

NSURL *url = [NSURL URLWithString:[urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];

您是否尝试过将数据写入本地文件,

NSString *docPath = [NSHomeDirectory() stringByAppendingString:@"/Documents"];

NSString *pdfFilePath = [docPath stringByAppendingPathComponent:@"pdfFile.pdf"];

BOOL success =  [myData writeToFile:pdfFilePath atomically:YES];

if (success) {

NSURL *url = [[NSURL alloc] initFileURLWithPath:pdfFilePath];

NSLog(@"url from data : %@",url);

}

希望这可以帮助。

谢谢

是的...我知道这种方法可以工作,但是出于安全目的,我不想将数据写入本地文件。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值