Ios 错误域=FIRStorageErrorDomain代码=-13010到底是什么?
我有一个应用程序,用户将图像发布到数据库中,然后当他按下一个按钮时,就会转到一个新的VC。然后,当viewDidLoad加载时,它应该运行下面所示的代码块(块1)。然而,当这种情况发生时,我会在控制台中看到下面的许多长错误。我能做些什么?这意味着什么 错误域=FIRStorageErrorDomain代码=-13010“对象gs:/practicearraybasicimg1.appspot.com/ZubvHHHWV4PCyn5eekhivf1nqn213/post0/1536537585.03625.jpg/0.jpg不存在。”用户信息={object=gs:/practicearraybasicimg1.appspot.com/ZubvhhWV4PcYn5EeKHIVf1nQn213/post0/1536537585.03625.jpg/0.jpg,ResponseBody=Ios 错误域=FIRStorageErrorDomain代码=-13010到底是什么?,ios,swift,firebase,firebase-realtime-database,Ios,Swift,Firebase,Firebase Realtime Database,我有一个应用程序,用户将图像发布到数据库中,然后当他按下一个按钮时,就会转到一个新的VC。然后,当viewDidLoad加载时,它应该运行下面所示的代码块(块1)。然而,当这种情况发生时,我会在控制台中看到下面的许多长错误。我能做些什么?这意味着什么 错误域=FIRStorageErrorDomain代码=-13010“对象gs:/practicearraybasicimg1.appspot.com/ZubvHHHWV4PCyn5eekhivf1nqn213/post0/1536537585.0
NoSuchKey
指定的键不存在。没有这样的对象:practicearraybasicimg1.appspot.com/gs:/practicearraybasicimg1.appspot.com/zubv4pcyn5eekhivf1n213/post0/1536537585.03625.jpg,bucket=practicearrAybasimcimg1.appspot.com,data=,data_content_type=application/xml;charset=UTF-8,NSLocalizedDescription=Object gs:/practicearraybasicimg1.appspot.com/zubvhhhhwv4pcyn5eekhivf1nqn213/post0/1536537585.03625.jpg/0.jpg不存在,ResponseErrorDomain=com.google.HTTPStatus,ResponseErrorCode=404}
第1区:
override func viewDidLoad() {
super.viewDidLoad()
// downloadImages(ImageObject: takePicViewController().image())
let uid = Auth.auth().currentUser?.uid
let storageRef = Storage.storage().reference().child((Auth.auth().currentUser?.uid)!).child("post\(takePicViewController().finalPost + takePicViewController().postImage.numberPost)").child(ImageUploadManager().imageName)
let ref = Database.database().reference()
let childRef = ref.child("Posts").child(uid!).child("post\(takePicViewController().finalPost + takePicViewController().postImage.numberPost)")
let postRef = childRef.child("ImageUrl")
self.downloadImages(folderPath: "\(storageRef)", success: {
(img) in
print(img)
self.p1ImageView.image = img
}) { (error) in
print(error)
}
}
功能如下所示:
func downloadImages(folderPath:String,success:@escaping (_ image:UIImage)->(),failure:@escaping (_ error:Error)->()){
for i in 0 ..< 194{
// Create a reference with an initial file path and name
let reference = Storage.storage().reference(withPath: "\(folderPath)/0.jpg")
reference.getData(maxSize: (3 * 1024 * 1024)) { (data, error) in
if let _error = error {
print(_error)
failure(_error)
} else {
if let _data = data {
let myImage:UIImage! = UIImage(data: _data)
success(myImage)
}
}
}
}
func下载图像(folderPath:String,成功:@escaping(u-image:UIImage)->(),失败:@escaping(u-error:error)->()){
对于0..<194中的i{
//创建具有初始文件路径和名称的引用
让reference=Storage.Storage().reference(带路径:“\(folderPath)/0.jpg”)
中的reference.getData(maxSize:(3*1024*1024)){(数据,错误)
如果let _error=error{
打印(_错误)
失败(_错误)
}否则{
如果让_data=data{
让myImage:UIImage!=UIImage(数据:_数据)
成功(myImage)
}
}
}
}
}“这是什么意思?”你自己仔细看了错误消息了吗?它清楚地表明该文件不存在。路径看起来也不正确。引用的格式是否错误?它是否需要与firebase中ot的外观完全相同?因为当我查看数据库上的url时,它有一些额外的字符串,它在.jpg之后缝合,但是不确定这是否重要。由于它是指向imag ein存储的参考URL,在上传文件后,URL路径中会有一些元数据跟随.jpg。下载文件时,不要使用那些“额外”数据(看起来不像是这样)。如果您查看定义了storageRef的块1,它将传递给downloadImages函数,然后该函数将另一个字符串附加到它的末尾。它已以imageName的子项结尾,但您正在附加/0.jpg。这似乎不正确。正在尝试添加打印(引用)就在let reference=行之后,看看ref也解析了什么。