0

制限がクエリに適用されると、クエリで最初に見つかった要素の前の兄弟が null になります。実際には兄弟がいますが、クエリでフェッチされていません。

FQuery* messageListQuery = [m_firebaseRef queryLimitedToNumberOfChildren:2];

[messageListQuery observeEventType:FEventTypeChildAdded andPreviousSiblingNameWithBlock:^(FDataSnapshot *snapshot, NSString *prevNodeName) {
    NSString     *nodeName = snapshot.name;
    NSDictionary *msgData = snapshot.value;
    NSString     *where = (prevNodeName == nil) ? @"at the beginning" : [NSString stringWithFormat:@"after %@", prevNodeName];
    NSLog(@"%@ says %@ %@", nodeName, msgData[@"text"], where);
}];

指定された FirebaseRef に 3 つのメッセージがあります。ただし、テスト 2 メッセージには前の兄弟がないことが示されています。

-J1JTkEzsdxHGMBEk5eD says Test 2 at the beginning
-J1JW0vpWBZema9QKUcB says Test 3 after -J1JTkEzsdxHGMBEk5eD

すべてのメッセージを表示すると、テスト 2 が前の兄弟として明確に表示されます。

-J1JTWoAw5IiUpzkOV4l says Test at the beginning
-J1JTkEzsdxHGMBEk5eD says Test 2 after -J1JTWoAw5IiUpzkOV4l
-J1JW0vpWBZema9QKUcB says Test 3 after -J1JTkEzsdxHGMBEk5eD

これがバグなのか、Firebase によって設計されたものなのかはわかりません。prevNodeName パラメーターを見て、さらにノードがあるかどうかを知りたいので、少し誤解を招くようです。

4

0 に答える 0