You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Firebase实时数据库(Swift):仅获取JSON结构的title字段

嘿,我来帮你搞定这个需求!在Swift里对接Firebase实时数据库提取ordini节点下的所有日期字符串(也就是该节点的子节点名称对吧?)其实很简单,下面给你两种常用的实现方式:

方法一:单次读取所有日期节点名

如果只需要一次性获取当前ordini下的所有日期字符串,用单次读取就够了:

首先导入Firebase数据库模块,然后定位到目标节点:

import FirebaseDatabase

// 获取ordini节点的数据库引用
let ordiniRef = Database.database().reference().child("ordini")

接着读取节点数据并提取子节点名称:

ordiniRef.observeSingleEvent(of: .value) { snapshot in
    // 把所有子节点转换成DataSnapshot数组
    guard let childSnapshots = snapshot.children.allObjects as? [DataSnapshot] else {
        print("未找到任何子节点")
        return
    }
    
    // 提取每个子节点的key(也就是你要的日期字符串)
    let dateTitles = childSnapshots.map { $0.key }
    
    // 这里可以根据业务需求处理这个数组,比如打印、存储到本地等
    print("提取到的日期列表:\(dateTitles)")
}
方法二:实时监听日期节点的变化

如果需要实时感知ordini下新增或删除的日期节点(比如有新的日期节点添加时自动获取),可以用实时监听:

// 监听新增的日期节点
ordiniRef.observe(.childAdded) { snapshot in
    let newDate = snapshot.key
    print("新增日期节点:\(newDate)")
}

// 监听删除的日期节点
ordiniRef.observe(.childRemoved) { snapshot in
    let removedDate = snapshot.key
    print("删除日期节点:\(removedDate)")
}

// 如果需要初始化时先获取当前所有日期,还是可以结合单次读取来实现
ordiniRef.observeSingleEvent(of: .value) { snapshot in
    guard let childSnapshots = snapshot.children.allObjects as? [DataSnapshot] else { return }
    let initialDates = childSnapshots.map { $0.key }
    print("初始日期列表:\(initialDates)")
}

补充说明

如果你的需求是提取子节点内部的title字段(而非节点名称),只需要把map里的$0.key改成$0.childSnapshot(forPath: "title").value as? String就行,记得处理可选值的情况哦。

内容的提问来源于stack exchange,提问作者Luca Morara

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 04:22:00