私はFirebase、Backendless、Swiftを使ってチャットアプリを構築するためにUdemyのコースを行っています。すべての問題(それはSwift 2のために書かれたものではありません)私は自分自身を解決することができましたが、これは私を困惑させます。この関数はFirebaseデータベースからデータを取得するはずですが、明らかにNSArrayとして取得することになっていましたが、NSDictionaryとして取得するようになりました。これは他の関数の巨大なリストを作成しています。辞書。動作しませんas! NSArray
を使用して、もちろんFirebase(Swift 3)からNSArrayとしてデータを取得して読み込みます。
func loadRecents() {
ref = FIRDatabase.database().reference()
let userId = currentUser?.getProperty("username") as! String
ref.child("Recent").queryOrdered(byChild: "userId").queryEqual(toValue: userId).observe(.value, with: {
snapshot in
self.recents.removeAll()
if snapshot.exists() {
let values = snapshot.value as! NSDictionary
}
})
}
:
func loadRecents() {
firebase.childByAppendingPath("Recent").queryOrderedByChild("userId").queryEqualToValue(currentUser.objectId).observeEventType(.Value, withBlock: {
snapshot in
self.recents.removeAll()
if snapshot.exists() {
let sorted = (snapshot.value.allValues as NSArray).sortedArrayUsingDescriptors([NSSortDescriptior(key: "date", ascending: false)])
}
})
}
私は限りスウィフト3に更新しました。これを更新してSwift 3を使用し、データの値でソートし、後でそれにアクセスできるようにする方法を誰かが提案することができれば、非常に感謝しますか?ありがとう!
が、これは助け、ありがとう、私は私がであることをより多くの研究を行ってからご覧くださいsnapshot.childrenの子のために ' myvalue = child.value [" my value "]を!文字列 } 'または子ノードを櫛でくくるようなもの。しかし、これを実行すると、「NSFastEnumerationIteratorに要素値はありません」と表示され、それをAnyObjectにキャストすることが示唆されていますが、もちろんこれも機能しません。あなたはこの作品を作る方法を知っていますか? –
@EthanTまず、 "子"の戻り値の型をデバッグモードでチェックする必要があります – ItsMeMihir