【发布时间】:2015-12-22 13:41:03
【问题描述】:
使用 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)
}
当我发现错误时:
Error Domain=NSCocoaErrorDomain Code=262 “无法打开文件“活动”,因为不支持 URL 类型 http。”用户信息={NSURL=http://localhost:3000/api/v1/activities}
更新 #1
我已经在Info.plist 中添加了适当的值,以确保 ATS 满意(见屏幕截图)。奇怪的是,我能够使用 HTTP(通过 dataTaskWithRequest:)从本地服务器下载数据,但 NSFileManager 在尝试执行 moveItemAtURL 时抱怨相同的 URL。
【问题讨论】:
-
马特的回答是正确的。由于您使用的是
localhost,我假设您有一个用于测试的 API 的本地设置。我建议禁用 ATS only in your Debug 配置,以便 ATS 在已发布的应用程序中仍然适用。另一种方法是明确地将 localhost 列入白名单,而不是一起禁用 ATS 的一揽子方法。 -
@vcsjones 我已经添加了(暂时)禁用 ATS 所需的密钥,但无济于事。请查看我更新的问题。
-
好吧,但是
localURL不是一个`file:///` URL,所以很难看出你期望在这里发生什么。 NSFileManager 处理文件,而不是更广泛意义上的 URL。你的代码没有意义。更新了我的答案以指出这一点。 :)