无法从Firebase快照中获取数据

时间:2017-05-08 21:12:19

标签: ios firebase firebase-realtime-database

我发现很多线程都有类似的问题......但我无法弄清楚我哪里出错了。

我有一个存储物品和篮子的数据库。这是一种“扫描即走”式支付应用程序。

我的Firebase数据库的结构如下:

Store_POC{
  "Store_SKU_List":{
    "Store_ID":{
      "Item_ID":{
        "item_name":
        "item_sku":
        "item_price":}
      }
    }
  }
 "Baskets":{
   "Store_ID":{
      "Auto_Gen_Basket_ID":{ 
        "Auto_Gen_Item_ID":{
          "item_name":
          "item_price":
          "item_sku":}

我能够输入商店和sku编号并检索与该特定项目相关联的值。这是我正在使用的代码:

import UIKit
import Firebase
import FirebaseDatabase

class FirstViewController: UIViewController {

//Firebase
var ref: FIRDatabaseReference!


//Interface Elements
    //Sku Lookup
    @IBOutlet weak var textStoreId: UITextField!
    @IBOutlet weak var textItemSku: UITextField!
    @IBOutlet weak var labelItemName: UILabel!
    @IBOutlet weak var labelItemSku: UILabel!
    @IBOutlet weak var labelItemPrice: UILabel!

var currentItem = [String:String]()
var currentItemModel = Item()
var activeBasket = Basket()

@IBAction func buttonAddToBasket(_ sender: UIButton) {
    activeBasket.addItem(item: currentItemModel)
}

@IBAction func buttonLookUpItem(_ sender: UIButton) {

    var itemData = [String:String]()

    self.ref?.child("Store_SKU_List").child(textStoreId.text!).child(textItemSku.text!).observeSingleEvent(of: .value, with: {

        (snapshot) in
         itemData = snapshot.value as! [String:String]
        print(snapshot)
        print(itemData)

        self.labelItemName.text = self.currentItem["item name"]
        self.labelItemSku.text = itemData["id"]
        self.labelItemPrice.text = itemData["item price"]
        self.currentItem = itemData

        self.currentItemModel.name = itemData   ["item name"]
        self.currentItemModel.sku = itemData["id"]
        self.currentItemModel.price = itemData["item price"]

    })
}

然而 - 这是我遇到的第一个问题。我无法将我从firebase中提取的数据分配给在主ViewController类中声明的变量 currentItem

我希望将刚刚查找的项目存储起来,以便可以“添加到购物篮”而无需再次查找所有变量。

我见过很多关于获取和访问firebase数据的教程,我相信我一直在正确地关注它们。如果是这样,为什么我不能将检索到的值分配给currentItem?

这可能是一个单独的问题......但我提到它以防万一它是相关的。

我试图将对数据库的调用分成函数。相反,我会调用getSkuInfo(sku:"123-1")之类的东西并尝试进行查找。当我这样做时,我可以看到我正在获取值,但是信息没有离开FIRDatabase调用,并且作为函数结果发回一个空数组。

0 个答案:

没有答案