当尝试在iOS中编码URL时,NSURLConnection完成了错误 – 代码-1002

我试图编码一个URL。 当我在我的包中编码文件时,代码工作正常。 但是当我尝试编码写入Documents and Cache的文件时,程序无法编码。

这是我的编码器:

private class func EncodeURL(_ url:URL,encoding:UInt) ->String { do{ return try NSString(contentsOf: url, encoding: encoding) as String }catch{} return "" } 

我使用以下三个:

 content = EncodeURL(url, encoding: String.Encoding.utf8.rawValue) content = EncodeURL(url, encoding: 0x80000632) content = EncodeURL(url, encoding: 0x80000631) 

而且它们都不起作用。

这是我用来生成文件的代码。 我把它们放在Documents文件夹中。

 func writeFile(fileName:String,data:NSData)->Bool{ guard let filePath = createFilePath(fileName: fileName) else{ return false } return data.write(toFile:filePath,atomically:true) } func createFilePath(fileName:String)->String?{ let dir = getCachePath() if(!dirExists(dir: dir) && !createDir(dir: dir)){ return nil } let filePath = dir + fileName if(fileExists(path: filePath)){ do{ try getFileManager().removeItem(atPath: filePath) }catch{ return nil } } return filePath } func getCachePath()->String{ var cacheDir = NSSearchPathForDirectoriesInDomains(FileManager.SearchPathDirectory.documentDirectory, .userDomainMask, true).first! if(!cacheDir.hasSuffix("/")){ cacheDir += "/" } cacheDir += CACHEPATH + "/" //CACHEPATH is just NSHomeDirectory() return cacheDir } writeFile(fileName: String(timeInterval)+"_"+somestring+".txt", data: data! as NSData) 

以上是我生成文件的方式。

我如何通过URL是:

 url = URL(string:getCachePath()+bookname+".txt") 

将此传递给

 EncodeURL(url:URL,encoding:UInt) 

我的url是:

/用户/ houki /库/开发商/ CoreSimulator /设备/ 67C921C8-18A3-4A3F-81FF-C3AF04E88049 /数据/容器/数据/应用/ 85633861-90E6-4DB8-95B0-86C359C74C6B /文件//用户/ houki /库/开发商/ CoreSimulator /设备/ 67C921C8-18A3-4A3F-81FF-C3AF04E88049 /数据/集装箱/数据/应用/ 85633861-90E6-4DB8-95B0-86C359C74C6B / 1511757881.83107_bigbrother.txt

这看起来很奇怪吗? 我在模拟器上测试它。

但实际上,当我尝试通过路径读取文件时,这工作正常。 以下代码正在运行。

 let contentsofPath = try FileManager.default.contentsOfDirectory(atPath: getCachePath()) 

您没有正确创建URL 。 您正在将路径传递给string参数。 您需要使用URL(fileURLWithPath:)初始化程序。

 let url = URL(fileURLWithPath: path) 

如果您传递的字符串是以URL方案开头的有效URL,则仅使用URL(string:)初始值设定项。