在 objective c 中从 firebase 检索数据

Retrieve data from firebase in objective c

我正在尝试从 firebase 检索数据,并且我正在使用 firebase 提供的指南,但我无法使用我的 firebase 数据库创建引用。

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

我正在使用此代码为我的数据库创建引用,但应用程序崩溃了。

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** setObjectForKey: key cannot be nil'

我是 iOS 的新手,也是第一次使用 firebase。请根据 firebase 指南告诉我解决方案。

    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);
}];
  • 这是获取节点数据和值的代码。首先使 url 直到你的节点。
  • 如果您还有任何问题,请在此处添加评论。现在 swift.
  • 中的 Firebase 聊天工作了几天

我不是 firebase 专家,但是当你在 Obj-C 中使用 class 时,你要么调用它的 class 方法(例如 [FIRDatabase database]) ,或者您将首先分配并初始化它 ([[FIRDatabase alloc] <an initializer>]),然后在实例上使用实例方法。

在您上面的代码示例中,我看到了一个没有初始化器的分配,这让我觉得您遗漏了一些东西。

如果我查看 iOS quick start,我会看到对 initWithURL 的调用,这是初始化程序之一。

你可以轻松做到。如果您想使用它获取所有信息,您可以这样做。确保您已经创建了数据库 public 然后不需要身份验证

@property (strong, nonatomic) FIRDatabaseReference *ref;

在接口上定义属性然后

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

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

如果你想使用这个获取特定部分,你可以这样做

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

        NSDictionary *usersDict = snapshot.value;

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



    }];

我的 Json 来自 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"
      }
 ]
}