Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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 Swift 4:对于每次保存,如何更改firebase存储上文件夹的名称?_Ios_Arrays_Swift_Firebase_Firebase Storage - Fatal编程技术网

Ios Swift 4:对于每次保存,如何更改firebase存储上文件夹的名称?

Ios Swift 4:对于每次保存,如何更改firebase存储上文件夹的名称?,ios,arrays,swift,firebase,firebase-storage,Ios,Arrays,Swift,Firebase,Firebase Storage,我正在开发一个应用程序,用户可以将图像保存到firebase。我将图像保存在另一个文件夹中的文件夹中。每次用户按下按钮,它都会将图像数组发送到文件夹中。但我希望再次按下它,并在另一个文件夹中发送一个新数组。我能够通过计算数组中图像的数量来实现这段代码(这总是不同的,所以它可以工作),但是这是不可伸缩的 下面是一行: let storageRef = Storage.storage().reference().child((Auth.auth().currentUser?.email)!).chi

我正在开发一个应用程序,用户可以将图像保存到firebase。我将图像保存在另一个文件夹中的文件夹中。每次用户按下按钮,它都会将图像数组发送到文件夹中。但我希望再次按下它,并在另一个文件夹中发送一个新数组。我能够通过计算数组中图像的数量来实现这段代码(这总是不同的,所以它可以工作),但是这是不可伸缩的

下面是一行:

let storageRef = Storage.storage().reference().child((Auth.auth().currentUser?.email)!).child("\(PhotoArray.sharedInstance.photosArray.count) Post").child("\(imageName)")
什么是更有效和可扩展的方法?我还尝试过其他方法,比如将1添加到名为numberSaves的变量中,但除非我也将其设置为数据库中的变量,否则这是行不通的。此外,我还尝试过执行
Date().timeIntervalSince1970
,但效果并不理想


有什么建议吗?

您可以将folderName设置为变量,并将其重新用于for循环中的所有图像

let parentFolder = Storage.storage().reference().child((Auth.auth().currentUser?.email)!)
let imageFolderName = “\(Date().timeIntervalSince1970)-Post“
然后像往常一样上传

for image in images {
    let imageName = “\(UUID().uuidString).jpg“
    let storageRef = parentFolder.child(imageFolderName).child(imageName)
    // Upload to storageRef.
}
您还可以使用,而不是
索引
日期()。timeintervalnce1970
,如果订单不是问题,这是唯一标识符的默认转到

我拍了两张照片,它为每张照片制作了两个单独的文件夹。我希望它能够采取X数字图像,然后发送到数据库,然后能够采取更多的照片,然后保存,这一次有一个单独的文件夹包含新的图像。(如果阵列中的一些旧图像仍然发布在文件夹中,则这一点很重要)


您想在每次按下按钮时将其发送到DB,还是继续上载


如果您确实连续上传并且只想打开按钮,则只需在此处更改
imageFolderName
,并对
imageName
使用
UUID().UUIString
,这样图像就不会被覆盖。

但这不会按预期工作。
:这里的
Date()
有什么不能按预期工作?它毕竟满足了唯一性标准。查询父文件夹中有哪些图像文件夹太麻烦了,或者格式不够好,无法进行解析?没有,但是当我使用它时,它会为每个图像创建一个新文件夹。Wich等于使用for循环发送数组中的每个图像时的时间间隔。如果需要,这里是imageName变量。让imageName=“(Date().timeIntervalSince1970).jpg”我按照你说的做了,但是。它不起作用。我拍了两张照片,它为每张照片制作了两个单独的文件夹。我希望它能够采取X数字图像,然后发送到数据库,然后能够采取更多的照片,然后保存,这一次有一个单独的文件夹包含新的图像。(如果阵列中的一些旧图像仍然发布在文件夹中,这一点很重要)您希望在每次按下按钮时将它们发送到DB还是继续上载它们?我希望当你按下按钮时,它们会被发送出去。不continuesly@J.Hoefoldername
imageFolderName
是否在每个图像之间更改?不,但它与imageName的值相同,只是它们有不同的结尾。IE:jpg或POST如果
imageFolderName
没有更改,那么这两个图像存储在哪两个不同的文件夹中?它是否有可能来自早期的调用?您可以尝试使用不同的
imageName
像上面的
UUID().uuidString
来查看是否一个只覆盖第二个,因为
Date()。也许最后一部分我错了。