我正在研究有关餐厅的申请。 但是Firebase数据库结构有些问题。 我的代码的数据库结构是这样的:
next
如何将结构更改为:
restaurants {
AutoID {
name: "nnnnn",
phone:"88888888" }
AutoID {
name: "nnnnn",
phone:"88888888" }
image {
AutoID: URL
AutoID: URL }
}
目前的代码是:
restaurants {
AutoID {
name: "nnnnn",
phone:"88888888",
image: URL }
AutoID {
name: "nnnnn",
phone:"88888888",
image: URL }
非常感谢!
答案 0 :(得分:0)
正如您所说,您首先在FIRStorage
中存储图片,然后添加name
和phone
您需要做的事情是在imageRef
的关闭内需要存储您存储的图像URL的引用,因此在控制器中声明一个实例属性并将其设置在该闭包内,并且也不要在DB中设置图像URL,之后使用保存按钮使用新创建的属性来发布名称,电话和网址同时。
var imageURL = ""
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any])
{
let image = info[UIImagePickerControllerOriginalImage] as? UIImage
addImage.image = image
var data = Data()
data = UIImagePNGRepresentation(image!)!
let uniqueName = NSUUID().uuidString
let imageRef = FIRStorage.storage().reference().child("restaurantImage").child("\(uniqueName)")
imageRef.put(data, metadata: nil).observe(.success){(snapshot) in
self.imageURL = snapshot.metadata?.downloadURL()?.absoluteString
//Remove other code
}
self.dismiss(animated: true, completion: nil)
}
现在使用addRestaurant
的{{1}}添加密钥,并将其值设置为image
imageURL