操作无法完成。 (可可错误 260。)
Posted
技术标签:
【中文标题】操作无法完成。 (可可错误 260。)【英文标题】:The operation couldn’t be completed. (Cocoa error 260.) 【发布时间】:2013-05-06 08:32:02 【问题描述】:我是 ios 开发的新手,我正在开发一个 pdf 应用程序,我需要将一个 PDF 文件存储在 NSData 变量中,我有 PDF 路径,但是当我尝试放置这个 pdf 时出现此消息错误在 NSData 变量上使用 dataWithContentsOfFile 她是我的简单代码:
NSError *error;
NSString *PdfPath = [NSString stringWithFormat:(@"%@"),document.fileURL ];
NSString *newPath = [PdfPath stringByReplacingOccurrencesOfString:@"file://localhost" withString:@""];
NSLog(@"OriginalPdfPath => %@", newPath);
NSData *pdfData = [NSData dataWithContentsOfFile:newPath options:NSDataReadingUncached error:&error];
注意:pdf 路径采用以下格式:/Users/bluesettle/Library/Application%20Support/iPhone%20Simulator/6.0/Applications/BBEF320E-7E2A-49DA-9FCF-9CFB01CC0402/ContractApp.app/Pro .iOS.Table.Views.pdf
感谢您的帮助
【问题讨论】:
lPdfPath
是什么?为什么要替换子字符串? NSLog
行的 newPath 的输出是什么?
我的意思是 PdfPath 它只是一个错误,我替换了字符串,因为我发现路径需要没有“file://localhost”前缀并且 NSlog 的输出是“/Users/ bluesettle/Library/Application%20Support/iPhone%20Simulator/6.0/Applications/BBEF320E-7E2A-49DA-9FCF-9CFB01CC0402/ContractApp.app/Pro.iOS.Table.Views.pdf"
【参考方案1】:
Cocoa 错误 260 是 NSFileReadNoSuchFileError
(如 FoundationErrors.h
中所列),表示在您指定的路径中找不到该文件。
问题是您的路径仍然包含编码空格 (%20
),因为您是基于 URL 的。你可以这样做:
NSData *pdfData = [NSData dataWithContentsOfFile:[document.fileURL path]];
【讨论】:
我使用[lPdfPath stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
从路径中删除了 %20,620 错误消失了,但我得到了 NSData = (Null)
当我使用 absoluteString
时,我总是在路径上得到 %20,这就是为什么我使用 stringByReplacingPercentEscapesUsingEncoding
@hatimhaffane 啊,对不起,你是对的。已编辑帖子以提供可行的解决方案。
谢谢你,但仍然得到 NSData 变量,因为 Null 我会尝试找到解决方案
当前的解决方案绝对有效。如果你使用&error
的方法,它会说什么?【参考方案2】:
尝试使用NSBundle
NSString *newPath = [[NSBundle mainBundle] pathForResource:@"filename" ofType:@"pdf"]
编辑:
你可以使用bundleWithPath
方法,这里是一个例子:
NSString *documentsDir= [NSString stringWithFormat:@"%@/Documents", NSHomeDirectory()];
NSString *newPath= [[NSBundle bundleWithPath:documentsDir] bundlePath];
【讨论】:
对我来说,我需要使用不在资源文件夹中的文件以上是关于操作无法完成。 (可可错误 260。)的主要内容,如果未能解决你的问题,请参考以下文章
保存到数据存储失败:操作无法完成。 (可可错误 133020。)