gpt4 book ai didi

ios - 无法使用来自 Firebase 数据库的数据填充数组

转载 作者:搜寻专家 更新时间:2023-11-01 07:12:45 25 4
gpt4 key购买 nike

下面我尝试创建一个数组 ChatListings,但它不起作用。

let chatRef = FIRDatabase.database().reference().child("chatListings")


override func viewDidLoad() {
super.viewDidLoad()
let firstQuery = chatRef.queryOrdered(byChild: "userID").queryEqual(toValue: userID)
firstQuery.observe(FIRDataEventType.value, with: { snapshot in
for child in snapshot.children {
print("child is \(child)")
if let dict = snapshot.value as? Dictionary<String, AnyObject>{
print("dict is \(dict)")
let roomKey = dict["chatRoomKey"] as! String
let oUID = dict["otherUserID"] as! String
let oUserName = dict["otherUserName"] as! String
let oProfilePic = dict["otherUserProfilePic"] as! String
let userIDTemp = dict["userID"] as! String
chatListing = ChatListing(chatRoomKey: roomKey, UID: userIDTemp, name: oUserName, otherUserID: oUID, otherUserProfilePicURL: oProfilePic)
chatListings.append(chatListing)
}
}
print("chatListings = \(chatListings)")
})
}

这表明编译器在解包 Optional 值时意外发现 nil。我不知道为什么它不起作用。我已经尝试了所有我能找到的方法来提取编译器在崩溃或无法填充我的“聊天列表”对象数组之前读取的数据。

这是编译器读取但无法提取的数据示例,可能有 4 种不同的编码尝试:

"-KjdSF97Q2z3afXzkwQ9": {
chatRoomKey = "-KjdSF97Q2z3afXzkwQ9";
messages = {
"-KjdSOVTsg8jEy6SeEA2" = {
MediaType = PHOTO;
fileUrl = "https://firebasestorage.googleapis.com/v0/b/preollify.appspot.com/o/mget8KN2nHe4sOhbnWTixYvCOrr2%2F515963239.371526?alt=media&token=6cb12ec1-5bdb-43a1-ab49-90c90570b341";
senderId = mget8KN2nHe4sOhbnWTixYvCOrr2;
senderName = Michael;
};
"-KjdSPxpNT0pkQ1y5-_1" = {
MediaType = VIDEO;
fileUrl = "https://firebasestorage.googleapis.com/v0/b/preollify.appspot.com/o/mget8KN2nHe4sOhbnWTixYvCOrr2%2F515963229.282051?alt=media&token=04671c8e-d7f1-49f2-81d0-09836c034ae2";
senderId = mget8KN2nHe4sOhbnWTixYvCOrr2;
senderName = Michael;
};
"-KjdVaVTfbaC-3S-91-A" = {
MediaType = TEXT;
senderId = mget8KN2nHe4sOhbnWTixYvCOrr2;
senderName = Michael;
text = The;
};
};
otherUserID = aRandomUser3611;
otherUserName = Michael;
otherUserProfilePic = "https://firebasestorage.googleapis.com/v0/b/preollify.appspot.com/o/ProfilePictures%2Fmget8KN2nHe4sOhbnWTixYvCOrr2%2FmediumProfilePicture.jpg?alt=media&token=d88afa5d-0db7-4ce2-95c9-3038ff592e9f";
userID = mget8KN2nHe4sOhbnWTixYvCOrr2;

我正在尝试提取除消息部分之外的所有数据,我计划稍后在应用程序中执行此操作。

此数据(不包括“消息”部分)像这样写入 chatViewController 的 viewDidLoad 中:

    let preMessageRef = chatRef.childByAutoId()
chatListingID = preMessageRef.key
let initialChatRoomData = ["chatRoomKey": chatListingID, "otherUserID": otherUID, "otherUserName": otherUserName, "otherUserProfilePic": otherUserProfilePicURLString, "userID": userID]
preMessageRef.setValue(initialChatRoomData)

从 Firebase 数据库中检索数据对我来说完全是命中注定,因为复制成功的提取数据尝试很少能成功两次。他们的文档很少,以至于遗漏了太多内容,因为它对如何在现实世界环境中提取数据几乎没有帮助。为什么人们喜欢 Firebase?使用 Firebase 是一次非常令人沮丧的经历,我对此深表遗憾。但现在回过头去寻找更好的东西可能为时已晚,即提供明确说明如何使其发挥作用的平台。

最佳答案

我认为你只是有一个愚蠢的错字。试试这个:

let childData = child as! FIRDataSnapshot
print("child key: \(childData.key)")
if let dict = childData.value as? Dictionary<String, AnyObject> {
...
}

即使用child代替snapshot


更新。原来使用 NSDictionary 而不是 Dictionary 修复了 dict 常量崩溃。但是,除了编译器错误之外,仍然不清楚为什么......

关于ios - 无法使用来自 Firebase 数据库的数据填充数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44088204/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com