Ich bin neu in Firebase und ich möchte die Provider-Foto-URL speichern, aber es kommt der Fehler 'Kann nur Objekte vom Typ NSNumber, NSString, NSDictionary, und NSArray. Ich habe andere Art des Verfahrens versucht, aber es scheint nicht funktioniert zum Beispiel let profilePicUrl = profile.photoURL as String
oder let profilePicUrl = NSString(NSURL: profile.photoURL)
Firebase Store-Provider-Foto-URL (kann Wert des Typs NSURL nicht konvertieren?)
Es ist meine Methode,
func createFirebaseUser(){
let key = ref.child("user").childByAutoId().key
if let user = FIRAuth.auth()?.currentUser{
for profile in user.providerData{
let uid = profile.uid
let providerID = profile.providerID
let displayName = profile.displayName
let email = ""
let profilePicUrl = profile.photoURL
//let userDict :[String : AnyObject] = ["name": username!"profilePicUrl": profilePicUrl!]
let profile = Profile(uid: uid, displayName: displayName!,email: email, imageUrl: profilePicUrl)
let childUpdates = ["/user/\(key)": profile]
ref.updateChildValues(childUpdates, withCompletionBlock: { (error, ref) -> Void in
// now users exist in the database
print("user stored in firebase")
})
}
}
und es ist das Datenmodell
import Foundation
class Profile {
private var _uid: String
private var _displayName: String
private var _email: String?
private var _gender: String!
private var _city: String!
private var _imageUrl: String!
var uid: String {
return _uid
}
var displayName: String {
get {
return _displayName
}
set {
_displayName = newValue
}
}
var email: String {
get {
return _email!
}
set {
_email = newValue
}
}
var gender: String {
get {
return _gender
}
set {
_gender = newValue
}
}
var city: String {
get {
return _city
}
set {
_city = newValue
}
}
var imageUrl: String {
get {
return _imageUrl
}
set {
_imageUrl = newValue
}
}
init(uid: String, displayName: String, email: String, imageUrl: String) {
_uid = uid
_displayName = displayName
_email = email
_imageUrl = imageUrl
}
Danke für die Beantwortung meiner Frage. Wenn ich die Daten von 'FIRAuth.auth() .currentuser' abholen möchte. Muss ich das Datendiktat zu "provider.email" usw. anstelle der spezifischen Daten ändern? –
Nicht sicher, dass ich diese Frage verstehe, aber currentUser wird eine eindeutige ID, eine primäre E-Mail-Adresse, einen Namen und eine Foto-URL haben. Wenn Sie also nach einer E-Mail fragen möchten, sollten Sie sie auch im Knoten/users/uid speichern, da Sie andernfalls nicht danach suchen können. Also in meinem Beispiel war es nur ein generischer E-Mail-Platzhalter - vielleicht eine zweite E-Mail, aber Sie könnten einfach hinzufügen, was Sie wollen – Jay