2017-10-29 2 views
1

Ich versuche zu suchen, um zu sehen, ob die E-Mail, die ein Benutzer tippt, in der Datenbank vorhanden ist, nicht, um die Pfade zu kodieren. Zum Beispiel mein erstes Kind heißt "Benutzer", dann zeigt es eine AutoID und dann "E-Mail" und dann die Benutzer-E-Mail. Das Problem ist, wenn ich Benutzer und E-Mail die App abstürzen wird, benötigt es die eindeutige ID. Im suchend nur überprüfen durch alle E-Mails, um herauszufinden, wenn die eine der eingegebene BenutzerWie durchsuche ich Firebase, um festzustellen, ob ein Benutzer existiert?

- (IBAction)signIn:(id)sender { 

    FIRDatabaseReference *usersRef = [[FIRDatabase database] reference]; 

    [[[[usersRef child:@"User"] child:@"-Kx_mPZvAzxZ9U3U0VXq"] child:@"Email"] observeEventType:FIRDataEventTypeValue withBlock:^(FIRDataSnapshot * _Nonnull snapshot) { 


     NSString *record = snapshot.value; 
     if(record.length > 0) { 
      NSLog(@"%@", record); 
     }else{ 
      NSLog(@"NO"); 
     } 

    } 
];} 
+2

Ich denke 'NSString * record = snapshot.value ist eine falsche Methode, um 'snapshot' zu überprüfen. 'snapshot' kann' NSDictionary', 'NSArray',' NSNumber', 'NSString' sein. Wenn 'snapshot' kein' NSString' ist und Sie record.length verwenden, wird dies zum Absturz führen. Versuchen Sie, '[snapshot exists]' zu verwenden, um den Snapshot zu überprüfen. – trungduc

+1

Wenn es nicht funktioniert, können Sie mir den Fehler zeigen? – trungduc

Antwort

0

existiert Sie können Throught alle ihnen passieren, ohne den Namen zu wissen:

FIRDatabaseReference *usersRef = [[FIRDatabase database] reference]; 
let users = 
rootRef.childByAppendingPath(User) 
menuItems.observeSingleEventOfType(.Value, withBlock: { snapshot in 
    for id in snapshot.children.allObjects as! [FDataSnapshot] { 
     //Access to every email here 
    } 
} 
Verwandte Themen