hitung objek Parse Swift + Bagian tableView

Saya cukup baru dalam Parse, jadi saya tetap menggunakan Panduan pengembang dan Fungsi Dasar. Sayangnya tampaknya setidaknya ada satu kesalahan pada dokumentasi mengenai fungsi countObjectsInBackgroundWithBlock. Inilah fungsi saya

var categoryCount: [Int] = []

fungsi getNumberOfItemInCategory() {

    for category in categories {
        var query = PFQuery(className: "Amiibos")
        query.whereKey("category", equalTo: category)
        query.countObjectsInBackgroundWithBlock { (count, error) -> Void in
            if error == nil {
                var result = Int(count)
                println("there is \(result) in \(category)")
 //               println( "TypeName0 = \(_stdlib_getDemangledTypeName(result))")
                self.categoryCount.append(result)
            }
        }

    }
    for toto in categoryCount {
        println("toto: \(toto)")
    }
    println("categoryCountFunc: \(self.categoryCount)")


}

Fungsi ini tidak mengembalikan Int tetapi Int32. Saya mencoba mengubah nilai pengembalian dengan return Int(count) tetapi saya mendapatkan kesalahan.

Maka saya ingin menggunakan fungsi ini dalam fungsi:

let categories = ["name1", "name2"]

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {

        if categoryCount.isEmpty {
        return 0
    }
    else {
        return categoryCount[section]
    }
    }

Bantuan apa pun akan sangat dihargai, terima kasih banyak

[edit - tambahkan] Saya menambahkan fungsi untuk mendapatkan hasil dan menyegarkan tabel.

func makeRequest() {
    dispatch_async(dispatch_get_main_queue(), { () -> Void in
        self.getMyObjectsFromParse()
        self.getNumberOfItemInCategory()
        self.tableView.reloadData()           
    })

person robin.s    schedule 17.05.2015    source sumber


Jawaban (1)


countObjectsInBackgroundWithBlock mengembalikan void, dan mengambil parameter blok yang juga mengembalikan void.

Inti masalah dengan kode yang diposting adalah gagasan untuk menghitung jumlah metode sumber data secara asinkron yang memerlukan hasil segera.

Desain yang lebih baik adalah dengan mengambil data untuk setiap bagian terlebih dahulu, menempatkan hasilnya dalam array sumber data, dan memuat ulang tabel. Kemudian numberOfRowsInSection dapat melakukan apa yang seharusnya dilakukan dan hanya mengembalikan jumlah array.

person danh    schedule 17.05.2015
comment
Terima kasih telah mengarahkan saya ke arah yang benar! Saya bisa membuat var dengan menambahkan hasilnya di dalamnya. Yah, semacam itu. Tidak tahu kenapa, ketika saya mencetak hasilnya ditampilkan tanpa masalah dan sebagai Integer. Tetapi ketika saya mencoba .append ke array variabel saya sepertinya tidak berhasil. Saya mengedit posting pertama saya - person robin.s; 18.05.2015