无法打开该文件,因为不支持URL类型http

时间:2015-09-24 20:10:10

标签: ios xcode swift ios9

使用iOS 9我尝试使用NSFileManager's moveItemAtURL

do {
    print(localURL) // http://localhost:3000/api/v1/activities
    print(cacheFile) // file:///Users/kyledecot/Library/Developer/CoreSimulator/Devices/35C03988-D8F5-42E5-AB35-B99BE461EEAE/data/Containers/Data/Application/69593B3A-F764-4BC3-89AD-72B701BF85C8/Library/Caches/activities.json 
    try fileManager.moveItemAtURL(localURL, toURL: cacheFile)
} catch let error as NSError {
    print(error)
}

当发现错误时我得到了:

  

错误域= NSCocoaErrorDomain代码= 262"无法打开文件“activities”,因为不支持URL类型http。"的UserInfo = {NSURL = http://localhost:3000/api/v1/activities}

更新#1

我已经为Info.plist添加了适当的值,以确保ATS满意(参见屏幕截图)。奇怪的是,我能够使用HTTP(通过dataTaskWithRequest:)从本地服务器下载数据,但NSFileManager在尝试执行moveItemAtURL时会抱怨相同的URL。

enter image description here

1 个答案:

答案 0 :(得分:11)

这里有两件事要知道:

  • 在iOS 9中,默认情况下不支持http://。您必须安全地进行通信(使用https://)。如果需要,您可以在 Info.plist 中关闭此功能。

  • NSFileManager URL必须是磁盘上文件的路径 - 也就是说,它们必须是文件 URL。你的不是;它是http://网址。如果您的目标是下载文件然后将其复制到某处,请使用NSURLSession的下载任务。