要在基于TableView的应用中使用Firebase显示手动输入的数据,你需要遵循以下步骤:
Podfile
中添加以下内容: pod 'Firebase/Core' pod 'Firebase/Database'pod install
安装依赖。AppDelegate.swift
文件中,导入Firebase并初始化: import Firebase func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { FirebaseApp.configure() return true }创建一个数据模型类来表示你要显示的数据。例如,假设你要显示一个简单的消息模型:
struct Message {
let text: String
let timestamp: Date
}
确保你的Firebase数据库规则允许读取和写入数据。在Firebase控制台中,设置以下规则:
{
"rules": {
".read": "auth != null",
".write": "auth != null"
}
}
在你的ViewController中,设置TableView并实现数据源方法。
import UIKit
import Firebase
class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
@IBOutlet weak var tableView: UITableView!
var messages: [Message] = []
override func viewDidLoad() {
super.viewDidLoad()
tableView.dataSource = self
tableView.delegate = self
loadMessages()
}
func loadMessages() {
guard let uid = Auth.auth().currentUser?.uid else { return }
Database.database().reference().child("users").child(uid).child("messages").observe(.value, with: { snapshot in
var newMessages: [Message] = []
for child in snapshot.children {
if let snapshot = child as? DataSnapshot,
let dict = snapshot.value as? [String: Any],
let text = dict["text"] as? String,
let timestamp = dict["timestamp"] as? TimeInterval {
let date = Date(timeIntervalSince1970: timestamp)
newMessages.append(Message(text: text, timestamp: date))
}
}
self.messages = newMessages
self.tableView.reloadData()
})
}
// UITableViewDataSource methods
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return messages.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "MessageCell", for: indexPath)
let message = messages[indexPath.row]
cell.textLabel?.text = message.text
return cell
}
}
在你的应用中,提供一个界面让用户手动输入数据,并将数据保存到Firebase。
func saveMessage(text: String) {
guard let uid = Auth.auth().currentUser?.uid else { return }
let timestamp = Date().timeIntervalSince1970
let messageData: [String: Any] = ["text": text, "timestamp": timestamp]
Database.database().reference().child("users").child(uid).child("messages").childByAutoId().setValue(messageData)
}
当数据保存到Firebase后,loadMessages
方法会自动更新 messages
数组,并调用 tableView.reloadData()
来刷新TableView。
通过以上步骤,你可以在基于TableView的应用中使用Firebase显示手动输入的数据。确保你的Firebase数据库规则允许读取和写入数据,并且正确处理数据的加载和保存。
领取专属 10元无门槛券
手把手带您无忧上云