使用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}
我已经为Info.plist
添加了适当的值,以确保ATS满意(参见屏幕截图)。奇怪的是,我能够使用HTTP(通过dataTaskWithRequest:
)从本地服务器下载数据,但NSFileManager在尝试执行moveItemAtURL
时会抱怨相同的URL。
答案 0 :(得分:11)
这里有两件事要知道:
在iOS 9中,默认情况下不支持http://
。您必须安全地进行通信(使用https://
)。如果需要,您可以在 Info.plist 中关闭此功能。
NSFileManager URL必须是磁盘上文件的路径 - 也就是说,它们必须是文件 URL。你的不是;它是http://
网址。如果您的目标是下载文件然后将其复制到某处,请使用NSURLSession的下载任务。