我对Firebase真的很陌生,但我开始喜欢它。所以我在将快照的值传递给块之外时遇到问题。iOS Firebase如何在Block之外传递快照值/钥匙
我想使用NSStrings和/或NSarrays成为快照的价值。以便我可以在我的其他代码中使用它们。
这里是我的代码
NSString *string1;
NSArray *array1;
Firebase *usersRef = [fb childByAppendingPath:@"Parent name"];
FQuery *statesRef = [usersRef queryOrderedByChild:@"email"];
FQuery *specificStateRef = [statesRef queryEqualToValue:@"user name"];
[specificStateRef observeEventType:FEventTypeChildAdded withBlock:^(FDataSnapshot *snapshot) {
//NSLog(@"snapshot: %@", snapshot);
NSLog(@" key: %@", snapshot.key);
NSLog(@" value: %@", snapshot.value);
//HELP ME HERE
array1=[[NSarray alloc]initwithObjects:snapshot.value];
string1=snapshot.key;
}];
所以外面这一块,如果我写的。
NSLog(@" String1 = %@", string1);
NSLog(@" Array1 = %@", array1);
不幸的是,string1和array1的值都等于零。如何从Firebase获取值,然后在整个代码中使用它们。我怎样才能将这些值从块中取出?感谢你们
嘿周杰伦谢谢。这很糟糕,我在这个街区之外工作,但是你推荐什么旗帜?因为在块外读取时整数或字符串的值等于null。所以如果在块内我设置整数等于1,在整数值不等于1的块之外。那么你推荐什么标记机制?如果你没有答案,这很难,所以不用担心,我很感激帮助。 – user3352739
你的评论更多的是一个迅速/ objc的问题,并在我的答案回答;定义块外的变量(如数组),然后在从Firebase返回数据时设置块内的值。举例来说,如果你想填充一个数组作为tableView的dataSource。在块外定义数组,通过.value查询数据。然后迭代填充数组的快照(仍在块中),然后在完成该迭代时刷新tableView。 – Jay
我不想要一个tableview。我真的需要弄清楚这一点。 – user3352739