2016-04-20 7 views
0

Wie bekomme ich die Benutzer-ID in die Firebase-URL? Ich erhalte derzeit diesen Fehler ... "Verwendung von nicht aufgelösten Bezeichnern".Laden von Daten vom Firebase abhängig davon, welcher Benutzer angemeldet ist

Ich habe versucht, die "let defaults: ..." und "let userID: ..." über die "let firebase = Firebase (url: ..)", aber dann habe diesen Fehler ... "Instanz Mitglied "defaults" kann nicht für den Typ TableViewController verwendet werden ".

Was ich versuche, ist ein Benutzerprofil des Benutzers laden, die die Benutzer-ID entspricht.

Relevanter Code unten.

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 
} 

Antwort

0

Es scheint, Sie versuchen, für den aktuell authentifizierten Benutzer in einigen Benutzerinformationen zu laden

eine Struktur

gegeben
users 
    uid_0: 
    user_name: "Buzz Aldrin" 

Wenn ja, dann ist es super einfach (?):

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) 
}) 

Ich weiß nicht, welchen Teil die NSUserDefaults spielen, aber wenn der Benutzer authentifiziert ist Firebase, Sie sollten es von AuthData abrufen. Wenn nicht, und Sie haben es in den NSUserDefaults gespeichert, holen Sie es von dort statt der authData.

+0

hat perfekt funktioniert :) danke! – XcodeBeginner

0

Sie verwenden userId außerhalb des Bereichs, an dem Punkt, wo es nicht vorhanden ist. Tun Sie etwas wie dies, halten Sie Firebase als optionale Eigenschaft und dann, wenn Sie userId eine URL erstellen und dann erstellen Firebase Objekt mit dieser URL.

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 
} 
Verwandte Themen