2016-06-02 16 views
2

Ich versuche, Daten von Firebase und ich eine Verwendung der Anleitung von Firebase abrufen, aber ich bin nicht in der Lage, die Referenz mit meiner Firebase-Datenbank zu erstellen.Abrufen von Daten aus dem Firebase in Objective c

FIRDatabaseReference * ref = [[FIRDatabase alloc] 
    referenceFromURL:@"https://project-8326407164650950213.firebaseio.com"]; 
NSLog(@"%@",ref); 

Ich verwende diesen Code, um die Referenz mit meiner Datenbank aber App-Absturz zu erstellen.

beenden app aufgrund nicht abgefangene Ausnahme 'NSInvalidArgumentException', Grund: '*** setObjectForKey: Schlüssel nicht gleich Null'

: Ich bin in iOS und zum ersten Mal mit Feuerbasis. Bitte sagen Sie mir die Lösung, wie ich nach Firebase Guide gehe.

Antwort

1

Ich bin kein Experte Feuerbasis, aber wenn man mit einer Klasse in Obj-C arbeiten, werden Sie entweder seine Klassenmethoden (zB [FIRDatabase database]) aufrufen, oder Sie werden zuerst zuweisen und initialisieren ([[FIRDatabase alloc] <an initializer>]) und zweitens eine Instanzmethode für die Instanz verwenden.

In Ihrem obigen Codebeispiel sehe ich ein Alloc ohne Initialisierer, was mich glauben lässt, dass etwas fehlt. Wenn ich mir die iOS quick start anschaue, sehe ich einen Anruf an , der einer der Initialisierer ist

+0

[FIRDatenbank-Datenbank] diese Zeile funktionierte. Danke – salmancs43

+0

können Sie erklären, was Sie getan haben, um Refrance der Datenbank in obj-c – user1374

+0

zu machen Sieht aus wie die API hat sich wieder geändert: https: //firebase.google.com/docs/reference/ios/firebasedatabase/interface_f_i_r_database#properties Jetzt sieht es so aus, als ob Sie etwas brauchen würden: FIRApp * app = [FIRApp configure]; [FIRDatenbank datenbankForApp: app]; (Entschuldigung, ich kann Code in einem Kommentar nicht formatieren - wenn Sie eine bessere Antwort wollen, stellen Sie eine Frage, anstatt eine lose verwandte Frage zu kommentieren;)) –

1
Firebase *messagePath = [[Firebase alloc] initWithUrl:[NSString stringWithFormat:@"%@%@%@", MAIN_URL,MESSAGES_DIRECTORY,conversationId]]; 
[[messagePath queryLimitedToLast:10] observeEventType:FEventTypeChildAdded withBlock:^(FDataSnapshot *snapshot) { 
    NSMutableArray *messages = [[NSMutableArray alloc] init]; 
    [messages addObject:snapshot.value]; 
    observingBlock(true,messages); 
}]; 
  • Hier ist der Code, mit Ihnen die Daten und den Wert des Knotens zu erhalten. Machen Sie zuerst URL bis zu Ihrem Knoten.
  • Noch haben Sie irgendein Problem, fügen Sie einfach hier Kommentar hinzu. Jetzt arbeite ich am Firebase Chat in Swift.
+0

Hallo, die Firebase-Klasse hat jetzt keinen Zugriff mehr auf Tage, da sie wie in ihren Dokumenten erwähnt veraltet ist. "Sie sehen die veralteten Dokumente. Sie sind ab dem 18. Mai 2016 veraltet. Diese Dokumente sind für Version 2.5.1 und darunter des Objective-C SDK. Gehen Sie zu unserer aktuellen Dokumentation, oder sehen Sie unsere iOS Migrationsleitfaden. " – salmancs43

+0

@ salmancs43 Ich habe mit FIRDATABASE chatten und Benutzer mit FIRAUTH in der neuesten Version authentifizieren. Ich weiß, das war eine ältere Version. – Jecky

+0

Ich versuche Daten abzurufen, aber mein Code ist nicht zum Abschlussblock gegangen. Ich möchte nur Daten nur von Firebase abrufen. Keine Benutzerauthentifizierung oder Speichern von Daten – salmancs43

0

Sie können es leicht tun. Wenn Sie alle Informationen damit abrufen möchten, können Sie dies tun. Stellen Sie sicher, dass Ihre db Öffentlichkeit dann nicht Auth erforderlich

@property (strong, nonatomic) FIRDatabaseReference *ref; 

Property definieren dann

self.ref = [[FIRDatabase database] reference]; 
    [self.ref observeEventType:FIRDataEventTypeValue withBlock:^(FIRDataSnapshot * _Nonnull snapshot) { 
      NSDictionary *usersDict = snapshot.value; 

      NSLog(@"Information : %@",usersDict); 
     }]; 

Wenn Sie diesen spezifischen Teil holen wollen mit auf der Schnittstelle hergestellt Sie können dies tun

[[self.ref child:@"results"] observeEventType:FIRDataEventTypeValue withBlock:^(FIRDataSnapshot * _Nonnull snapshot) { 

     NSDictionary *usersDict = snapshot.value; 

     NSLog(@"Info : %@",usersDict); 



    }]; 

Meine abgerufene Json von Firebase

{ 
    "results" : [ 
     { 
"name":"test 1", 
"URL" : "URL STRING" 
     }, 
{ 
"name":"test 1", 
"URL" : "URL STRING" 
     }, 
{ 
"name":"test 1", 
"URL" : "URL STRING" 
     }, 
{ 
"name":"test 1", 
"URL" : "URL STRING" 
     } 
] 
} 
Verwandte Themen