2016-11-05 10 views
0

私はので、私はまさにそれが何を意味するのか分からない私は迅速に新たなんだタイプの文字列NSString *スウィフト3 FirebaseのNSString *タイプ

を必要Firebaseライブラリコールを使用しています。しかし、私はリテラルを使用するとうまくいきますが、変数を使用するとスレッドが中止されることに気付きました。

は私が

let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate 
    let email = appDelegate.email 
    let fullName = appDelegate.fullName 

を持っていると私はやってみたい、この

let newUser = ["name" : fullName] 
    let users = self.ref.child("users") 
    let currentUser = users.childByAppendingPath(email) 
    currentUser.setValue(newUser) 

けどchildByAppendingPath(email)は、私はリテラル/ CONST /静的にemailを変換することができます方法はありNSString *

入力が必要です?私はここで一種迷っています。ここで

AppDelegateファイル(下記)ラヴィ​​・プラカシュ・バーマの勧告パー

var fullName = String() 
var email = String() 
func signIn(signIn: GIDSignIn!, didSignInForUser user: GIDGoogleUser!, 
      withError error: NSError!) { 
    if (error == nil) { 
     // Perform any operations on signed in user here. 
     fullName = user.profile.name 
     email = user.profile.email 

emailfullNameである私はemailfullNameNSStringを宣言しようとしたが、パラメータが文字列であることを訴えていますか?

enter image description here

+0

あなたはファイルAppDelegateで私にメールとのfullNameを表示することができますか? –

+0

@DanhHuynh done –

+0

私はchildByAppendingPathがSwift 3で廃止されているのを見て、 'let currentUser = users.child(email)'に変更するかNSStringに電子メールを 'let currentUser = users.childByAppendingPath(NSStringとして電子メール)' –

答えて

0

あなたfullNameemailは、すでにタイプNSString *のです。 GIDProfileDataクラスhereの参照を確認することができます。

更新

あなたはAppDelegateで、以下の変更を行うことができます。

var fullName: String! 
var email: String! 
func signIn(signIn: GIDSignIn!, didSignInForUser user: GIDGoogleUser!, 
      withError error: NSError!) { 
    if (error == nil) { 
     // Perform any operations on signed in user here. 
     fullName = user.profile.name as String 
     email = user.profile.email as String 
+0

アップデートを確認してください。これで、 'String()'と入力する必要があると不平を言っていますか? –

+0

これは 'as String'行にBAD INSTRエラーをスローする –

+0

XCodeを再起動してビルドをクリーンアップしようとしましたが、同じ問題が発生しました –

0

試してください: -

スウィフト2

let ref = FIRDatabase.database().reference() 
    let users = ref.child("users") 
    let currentUser = users.childByAppendingPath(FIRAuth.auth()!.currentUser!.email!) 
    print(currentUser) 

についてはについてはスウィフト3

let ref = FIRDatabase.database().reference() 
    let users = ref.child("users") 
    let currentUser = users.child(byAppendingPath: FIRAuth.auth()!.currentUser!.email!) 
    print(currentUser) 

そして、あなたはfirebase 3倍使用している場合は、childByAppendingPathそれはまだ試して動作しない場合child

let currentUser = users.child(FIRAuth.auth()!.currentUser!.email!) 

を使用して試して廃止されました: -

let currentUser = users.childByAppendingPath("\(email)") // not preferred 
関連する問題