ファイヤーベースストレージ内の画像へのリンクを含むファイヤーベースリアルタイムデータベースからのデータをテーブルビューに取り込む、新しいファイヤーベースプロジェクトを再作成しようとしています。コレクションビューにファイヤーベースデータを設定する
私は、火災ベースのデータを持つテーブルビューであるチュートリアルプロジェクトを作成できます。しかし、私の現在のプロジェクトでは、エクステンション内のコレクションビューです。
は、私は私の変数私はその後、呼び出し、私はfirebase
から取得する私のデータの配列であると考え
var ref: FIRDatabaseReference!
var messages: [FIRDataSnapshot]! = []
var msglength: NSNumber = 10
private var _refHandle: FIRDatabaseHandle!
特に
var messages: [FIRDataSnapshot]! = []
に問題を絞り込むました関数は、私のviewdidload()に配列を移入する必要があります
func loadPosts(){
self.messages.removeAll()
// Listen for new messages in the Firebase database
_refHandle = self.ref.child("messages").observeEventType(.ChildAdded, withBlock: { (snapshot) -> Void in
//print("1")
self.messages.append(snapshot)
//print(self.messages.count)
})
}
エクステンションを使用する横スクロールが必要なので、コレクションビューを作成しようとすると問題が発生します。私の値の配列は常に0ですが、私のloadPosts()関数では、私の配列の数はfirebaseにある投稿の量と同じです。
extension HomeViewController : UICollectionViewDataSource
{
func numberOfSectionsInCollectionView(collectionView: UICollectionView) -> Int {
return 1
}
func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return messages.count
}
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
print(messages.count)
let cell = collectionView.dequeueReusableCellWithReuseIdentifier(StoryBoard.CellIdentifier, forIndexPath: indexPath) as! InterestCollectionViewCell
// Unpack message from Firebase DataSnapshot
let messageSnapshot: FIRDataSnapshot! = self.messages[indexPath.row]
let message = messageSnapshot.value as! Dictionary<String, String>
let name = message[Constants.MessageFields.name] as String!
if let imageUrl = message[Constants.MessageFields.imageUrl] {
if imageUrl.hasPrefix("gs://") {
FIRStorage.storage().referenceForURL(imageUrl).dataWithMaxSize(INT64_MAX){ (data, error) in
if let error = error {
print("Error downloading: \(error)")
return
}
cell.featuredImageView?.image = UIImage.init(data: data!)
}
} else if let url = NSURL(string:imageUrl), data = NSData(contentsOfURL: url) {
cell.featuredImageView?.image = UIImage.init(data: data)
}
cell.interestTitleLabel?.text = "sent by: \(name)"
}
return cell
}
}
私はFIRDataSnapshotを使用することではないでしょうか?もしそうなら、どちらを使うのが正しいですか?あるいは、私は拡張を使わない別の形でプロジェクトにアプローチすべきですか?
オブジェクトを配列に挿入したら、collectionViewでreloadData()を呼び出していますか? –
ああ、私はそうではありませんでした。すべてがちょうど満員になった!ありがとうございました! @MacBellingrath – Mark
素晴らしい!私は答えを投稿するつもりです。 –