菜鸟教程小白 发表于 2022-12-11 19:55:20

ios - Swift - 无法从 Firebase 数据库中检索数据


                                            <p><p>我是一名初学者 Swift 程序员。我正在学习从 Firebase 数据库中检索数据。 </p>

<p>调试控制台显示:</p>

<blockquote>
<p>&#34;Could not cast value of type &#39;__NSDictionaryM&#39; (0x11020b4f8) to &#39;NSString&#39; (0x10f37b2a8).2018-03-26 15:49:25.442062+0800 messagingapp Could not cast value of type &#39;__NSDictionaryM&#39; (0x11020b4f8) to &#39;NSString&#39; (0x10f37b2a8)&#34;.</p>
</blockquote>

<p>我在代码末尾设置了一个断点,并设法确认 <code>postDict</code> 正确地从快照中检索数据。但是,数组 <code>postData</code> 无法追加。如果有人能给我建议来克服这个问题,我将不胜感激。非常感谢</p>

<pre><code>var postData = [&#34;message 1&#34;, &#34;message 2&#34;]

postRef = FIRDatabase.database().reference()

refHandle = postRef.observe(FIRDataEventType.value, with: { (snapshot) in
    let postDict = snapshot.value as? ?? [:]
    // ...

    for ( _, myvalue) in postDict {
      self.postData.append(myvalue as! String)

    }
    self.tableView.reloadData()      
})
</code></pre>

<p> <img src="/image/5QfG1.png" alt="enter image description here"/> </p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>查看您的 <code>postDict</code> 调试控制台输出,我猜您只是忘记访问 <code>"Posts"</code> 键(在填写相应的 <code>self.postData</code>)。例如:</p>

<pre><code>let valueDict = snapshot.value as? ?? [:]
let postDict = valueDict[&#34;Posts&#34;] as? ?? [:]
// ...

for (_, postString) in postDict {
    self.postData.append(postString)
}
</code></pre>

<p>顺便说一句,您还可以使用 <em>尾随闭包</em> 语法糖进一步简化代码:</p>

<pre><code>refHandle = postRef.observe(FIRDataEventType.value) { (snapshot) in
    /* observer body */
}
</code></pre></p>
                                   
                                                <p style="font-size: 20px;">关于ios - Swift - 无法从 Firebase 数据库中检索数据,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/49485499/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/49485499/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - Swift - 无法从 Firebase 数据库中检索数据