热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

firebase创建数据库_使用Firebase和INSPhotoGallery在Swift中创建照片库

firebase创建数据库我目前正在开发一个名为i-TravelJournal的旅行应用程序,而我想添加的功能之一是允许用户上载和删除图库中的照片的功能。我正在互联网

firebase创建数据库

-Gallery ID -> URL Gallery- 5C3E4F78-FC18-46C7-8545-26D229861465 : " https://firebasestorage.googleapis.com/v0/b/mytravelapp-e365b.appspot.com/o/gallery%2F6CE2EAA7-14B8-4820-9737-466FD95AA11E.jpg?alt=media&token=b621d365-aaee-4666-9817-d8dee0022afc "

每个图像都在图库子项下,然后每个子项都有一个唯一的ID,该ID指向Firebase存储中的URL位置

提取图库

fetch gallery方法检查Firebase中是否存在子属性画廊的任何元素。 它循环遍历并尝试填充我们之前创建的Gallery Array,但是在完成操作之前,我们希望在调用imageToURL方法之前防止Gallery显示重复的记录。 您可以参考Firebase文档以了解如何查询数据的语法。

因此,它将扫描包含库,以使用contains方法查看可访问性引用在库中是否有任何重复项。 尽管可访问性参考通常用作图像的描述性文本,但在本例中,我们使用它来唯一地跟踪Firebase中使用的ID。

imageToURL

从INSPhotoGallery文档中可以看到,他们使用INSPhoto对象来初始化其画廊。 要显示UICollectionCell的每个元素缩略图,我们必须点击Firebase提供的URL,以便下载图像并将其显示在应用程序中。 因此,每次将元素添加到视图时,我们都会刷新CollectionView以使用最新图像更新UI,这就是使用DispatchQueue.main.async以便在主线程上激活它的原因。

uploadImageToFirebase

此方法实际上是处理上传到Firebase的数据的方法。 目的是当用户从UIImagePicker中选择图像时,他们可以立即将数据上传到Firebase。 实时数据库中的数据在很大程度上取决于是否已将图像成功上传到Firebase Storage。 成功上传图像后,完成处理程序将返回带有实际图像链接的下载URL,该链接将附加到现有的图库数组中。 如果上传过程中有任何问题,则会使用以下代码触发警报,通知用户:

func displayAlert( title: String, message: String){ let alert = UIAlertController.init(title: title , message: message , preferredStyle: .alert) let dismiss = UIAlertAction.init(title: "dismiss", style: .default, handler: nil) alert.addAction(dismiss) present(alert, animated: true, completion: nil) }

CellForRowAt

在这种方法中,我们为看到的每个单元格设置视图。 IndexPath可以跟踪用于遍历我们拥有的单元格数组的索引号。 还记得我们之前创建的自定义单元名称吗? 我们使用它来标识我们创建的单元格自定义组件的结构。

因此,对于第一个单元格行,我希望显示图库图像,允许用户与该单元格进行交互,并隐藏删除按钮。

对于所有其他单元格,我希望显示删除按钮。 我添加了一个称为handle click的方法,稍后将详细讨论该方法,该方法实际上可以处理单击记录的删除。

handleClick

此方法适用于每个附加了删除按钮的按钮。 为了防止用户轻松删除元素,我使用UIAlertController作为用户的安全防护。 如果“是”被选择使用sender.tag使用IndexPath.rowCellForItemAt方法应用,该要素是使用通过无障碍标识传递的唯一ID标识,它找到的纪录火力地堡,并将其设置为无。 从Firebase中删除元素时,将调用FetchGallery,该更新将更新UI以删除该元素。 Fetch Gallery使用观察处理程序,该观察程序一旦设置,就会侦听对记录所做的任何更新,例如删除,添加或更新现有记录。

DidSelectItemAt

didSelectItemAt处理当用户单击图像时发生的情况。 如果索引为0,则将显示图像选择器。 我将在下面详细讨论。 INSPhotoGallery的魔力尚未真正揭示出来,但这就是现在的光芒。 因为我为Gallery Image创建了一个占位符,所以indexPath的值偏移为1,因此为了准确显示数组的实际大小,我将数组的总数减去1。

这实际上是INSPhotoGallery文档中的副本和粘贴。 简而言之,他们的代码正在执行的操作是遍历Gallery数组的索引并检查其中是否确实有图像。 如果存在图像,它将使用已设置的特殊View Controller以全尺寸显示图像。

ImagePickerController

这是最后一个完整的圆圈,要上传图片,您需要一张图片! 为了获得该图像,我们使用UIImagePicker并允许用户有机会从那里选择的画廊中选择图像。

如果用户成功选择了一个图像,我们将同时做两件事,将图像添加到Gallery数组中,然后我们使用存储引用来调用上面定义的uploadImageToFirebase方法。 之后,我们重新加载集合视图,以便可以进行新的更改。

结论

今天,我们使用Firebase Realtime Database,Firebase Storage和流行的图库框架INSPhotoGallery创建了图库。 尽管这看起来很复杂,但您可以了解Firebase如何快速集成到应用程序中,并看到一个简单的用法。

我还邀请您为我的应用程序I-Travel Journal试用Beta。 如果您想提供帮助,请进行测试,并在以下链接中留下反馈。 感谢您阅读我的文章,查看我以前的文章以获取有用的信息。

翻译自: https://hackernoon.com/creating-a-photo-gallery-in-swift-using-firebase-insphotogallery-2a39196bcf1

firebase创建数据库



推荐阅读
author-avatar
416703721
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有