Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 未从Firebase存储下载图像_Ios_Swift_Firebase_Firebase Storage - Fatal编程技术网

Ios 未从Firebase存储下载图像

Ios 未从Firebase存储下载图像,ios,swift,firebase,firebase-storage,Ios,Swift,Firebase,Firebase Storage,我正在尝试将图像从新的Firebase存储下载到本地文件。为此,我使用Firebase提供的示例。这是我的代码: func getTumbnails(imageName: String) { // Create a reference to the file you want to download let tumbnailRef = storageRef.child("tumbs/\(imageName)") // Create local filesystem URL

我正在尝试将图像从新的Firebase存储下载到本地文件。为此,我使用Firebase提供的示例。这是我的代码:

func getTumbnails(imageName: String) {
    // Create a reference to the file you want to download
    let tumbnailRef = storageRef.child("tumbs/\(imageName)")
    // Create local filesystem URL
    let localURL: NSURL! = NSURL(string: "file:///local/tumbnails/\(imageName)")

    // Download to the local filesystem
    let downloadTask = tumbnailRef.writeToFile(localURL) { (URL, error) -> Void in
        if (error != nil) {
            print(error)
        } else {
            let data = NSData(contentsOfURL: URL!)
            self.data = data!
            print(data)
        }
    }
}
但是,当我调用函数
gettumbails(“image”)
时,控制台会显示以下错误:

可选(错误域=FIRStorageErrorDomain代码=-13000“出现未知错误,请检查服务器响应。”UserInfo={object=tumbs/Sunset.png,bucket=************.appspot.com,NSLocalizedDescription=发生未知错误,请检查服务器响应,ResponseErrorDomain=nsCoCarErrorDomain,NSFilePath=/local/tumbnails,NSUnderlyingError=0x137f629c0{error Domain=NSPOSIXErrorDomain Code=1“不允许操作”},ResponseErrorCode=513})

我在这里发现了有关stackoverflow的问题,但这是一个不同的错误(响应代码518,而我有513),而且由于我直接使用了示例代码,所以应该可以正常工作


有人能帮帮我吗?

似乎您可能没有正确声明您的
storageRef
(即您的存储桶名为
bucket=yourback.appspot.com
),或者您可能将
Firebase/Storage
添加到您的
工作区
,但没有更新
Google info.plist
。也许您可以显示更多的代码

更新: 你可以试试

let localURL: NSURL! = NSURL.fileURLWithPath(string: "file:///local/tumbnails/\(imageName)")

看起来您可能没有正确声明您的
storageRef
(即您的bucket名为
bucket=yourback.appspot.com
),或者您可能向
工作区添加了
Firebase/Storage
,但没有更新
Google info.plist
。也许您可以显示更多的代码

更新: 你可以试试

let localURL: NSURL! = NSURL.fileURLWithPath(string: "file:///local/tumbnails/\(imageName)")

可能是iOS 9的应用程序传输安全问题,请将此代码添加到您的
info.plist
中,然后再次检查

   <key>NSAppTransportSecurity</key>
    <dict>
      <!--Include to allow all connections (DANGER)-->
      <key>NSAllowsArbitraryLoads</key>
          <true/>
    </dict>
NSAppTransportSecurity
NSAllowsArbitraryLoads

可能是iOS 9的应用程序传输安全问题,请将此代码添加到您的
info.plist
中,然后再次检查

   <key>NSAppTransportSecurity</key>
    <dict>
      <!--Include to allow all connections (DANGER)-->
      <key>NSAllowsArbitraryLoads</key>
          <true/>
    </dict>
NSAppTransportSecurity
NSAllowsArbitraryLoads

这里的问题是,您收到一个
NSPOSIXErrorDomain
错误,表明您没有写入文件的权限
file:///local/tumbnails/\(imageName)
,可能是因为该目录(
/local
)不存在,即使存在,您也没有写入该目录的权限


我想查看一下您可以写入的目录列表——您可能应该使用
/Documents
/tmp

这里的问题是,您收到一个
NSPOSIXErrorDomain
错误,表明您没有写入该文件的权限
file:///local/tumbnails/\(图像名称)
,大概是因为该目录(
/local
)不存在,即使它存在,您也没有写入该目录的权限



我想看看你可以写入的目录列表——你可能应该使用
/Documents
/tmp

谢谢,但我已经正确设置了所有内容。出于安全原因,我将其更改为
yourback.appspot.com
,因为我还没有任何规则。也许你可以尝试
让localURL:NSURL!=NSURL.fileURLWithPath(字符串:file:///local/tumbnails/\(imageName)”)
这不是Firebase存储问题,错误(令人困惑)是一个
NSPOSIXErrorDomain
,这意味着问题来自文件系统不允许开发人员写入该位置。没错。我四处查看,其中一个修复似乎是
。fileURLWithPath
谢谢,但我已正确设置了所有内容。出于安全考虑,我将其更改为
yourback.appspot.com
ns,因为我还没有任何规则。也许您可以尝试
让localURL:NSURL!=NSURL.fileURLWithPath(字符串):file:///local/tumbnails/\(imageName)”)
这不是Firebase存储问题,错误(令人困惑)是一个
NSPOSIXErrorDomain
,这意味着问题来自文件系统不允许开发人员写入该位置。没错。我环顾四周,其中一个解决方案似乎是
。fileURLWithPath
不,ATS不是必需的,因为Firebase存储使用了适当的SSL密码。不,ATS不是必需的,因为Firebase存储使用适当的SSL密码。谢谢!但是,这在模拟器上有效,但在实际设备上不起作用。模拟器上的应用程序沙盒可能与设备上的运行方式不同——您在设备上遇到了什么问题?您也可能在设备上使用不同的权限运行,并且无法访问o写入
/Documents
(您可能需要写入您的用户目录或只需
/tmp
)当您尝试写入
/tmp
时,错误是否相同?设备是否越狱?是的,是相同的错误,并且我的设备不是越狱!但是,这在模拟器上有效,但在实际设备上无效。可能模拟器上的应用程序沙盒与设备上运行的应用程序沙盒不同-您在de上遇到了什么问题副作用?也可能是您在设备上以不同的权限运行,无法写入
/Documents
(您可能必须写入您的用户目录或仅
/tmp
)当您尝试写入
/tmp
时,错误是否相同?设备是否越狱?是的,错误相同,并且我的设备未越狱