首页 文章

从firebase加载数据取决于登录的用户

提问于
浏览
0

如何将userID放入firebase网址 . 我目前收到此错误...“使用未解析的标识符” .

我尝试将“let defaults:...”和“let userID:...”移到“let firebase = Firebase(url:..)”之上,但后来出现了这个错误......“实例成员'默认'不能用于类型TableViewController“ .

我想要做的是加载与userID匹配的用户的用户配置文件 .

相关代码如下 .

let firebase = Firebase(url:"https://<myfirebase>.firebaseio.com/users/\(userID)")
var items = [NSDictionary]()

override func viewDidLoad() {
    super.viewDidLoad()

    let rightItemBtn = UIButton()
    rightItemBtn.backgroundColor = UIColor.whiteColor()
    rightItemBtn.frame = CGRectMake(40, 40, 60, 35)


    let defaults: NSUserDefaults = NSUserDefaults.standardUserDefaults()
    let userID = (defaults.objectForKey("userID") as? String)!

    let labelText = userID

    label.frame = CGRectMake(40, 40, 50, 35)

    label.text = labelText
}

2 回答

  • 0

    您似乎正在尝试为当前经过身份验证的用户加载一些用户信息(?)

    给定一个结构

    users
      uid_0:
       user_name: "Buzz Aldrin"
    

    如果是这样,它非常简单:

    let fb = Firebase(url:"https://<myfirebase>.firebaseio.com")
    
    let uid = fb.authData.uid
    let usersRef = fb.childByAppendingPath("users")
    let thisUserRef = usersRef.childByAppendingPath(uid)
    
    thisUserRef.observeSingleEventOfType(.Value, withBlock: { snapshot in
          let userName = snapshot.value.objectForKey("user_name") as! String
          print(userName)
    })
    

    我不知道NSUserDefaults会播放哪个部分,但如果用户通过Firebase身份验证,则应该从authData中检索它 . 如果没有,并且您已将其存储在NSUserDefaults中,则从那里检索它而不是authData .

  • 0

    您正在使用 userId 超出范围,在它不存在的位置 . 执行类似这样的操作,将firebase保留为可选属性,然后当userId创建一个url,然后使用该URL创建 Firebase Object .

    let userAPI = "https://<myfirebase>.firebaseio.com/users/"
    var firebase : Firebase?
    var items = [NSDictionary]()
    
    override func viewDidLoad() {
        super.viewDidLoad()
    
        let rightItemBtn = UIButton()
        rightItemBtn.backgroundColor = UIColor.whiteColor()
        rightItemBtn.frame = CGRectMake(40, 40, 60, 35)
    
    
        let defaults: NSUserDefaults = NSUserDefaults.standardUserDefaults()
        let userID = (defaults.objectForKey("userID") as? String)!
    
        let url = "\(userAPI)\(userID)"
        firebase =  Firebase(url:url)
    
    
        let labelText = userID
    
        label.frame = CGRectMake(40, 40, 50, 35)
    
        label.text = labelText
    }
    

相关问题