นับวัตถุ Parse Swift + tableView Section

ฉันยังใหม่กับ Parse ดังนั้นฉันจึงยังคงใช้คำแนะนำสำหรับนักพัฒนาและฟังก์ชันพื้นฐาน น่าเสียดายที่ดูเหมือนว่ามีข้อผิดพลาดอย่างน้อยหนึ่งข้อในเอกสารที่เกี่ยวข้องกับฟังก์ชัน countObjectsInBackgroundWithBlock นี่คือหน้าที่ของฉัน

var categoryCount: [Int] = []

func 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)")


}

ฟังก์ชันนี้ไม่ส่งคืน Int แต่เป็น Int32 ฉันพยายามเปลี่ยนค่าที่ส่งคืนด้วย return Int(count) แต่ฉันได้รับข้อผิดพลาด

จากนั้นฉันต้องการใช้ฟังก์ชันนี้ในฟังก์ชัน:

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

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

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

ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชมมาก ขอบคุณมาก

[แก้ไข - เพิ่ม] ฉันได้เพิ่มฟังก์ชั่นเพื่อรับผลลัพธ์และรีเฟรชตาราง

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 แหล่งที่มา


คำตอบ (1)


countObjectsInBackgroundWithBlock ส่งคืน void และรับพารามิเตอร์บล็อกซึ่งส่งคืน void ด้วย

หัวใจของปัญหาเกี่ยวกับโค้ดที่โพสต์คือแนวคิดในการคำนวณการนับวิธีแหล่งข้อมูลแบบอะซิงโครนัสที่ต้องการผลลัพธ์ทันที

การออกแบบที่ดีกว่าคือการดึงข้อมูลสำหรับแต่ละส่วนไว้ด้านหน้า วางผลลัพธ์ในอาร์เรย์แหล่งข้อมูล และโหลดตารางอีกครั้ง จากนั้น numberOfRowsInSection สามารถทำสิ่งที่ตั้งใจจะทำและส่งคืนจำนวนอาร์เรย์

person danh    schedule 17.05.2015
comment
ขอบคุณที่ชี้ทางที่ถูกต้องให้ฉัน! ฉันสามารถสร้าง var เพื่อเพิ่มผลลัพธ์ได้ เรียงลำดับของ ไม่รู้ว่าทำไม เมื่อฉันพิมพ์ผลลัพธ์ มันแสดงโดยไม่มีปัญหาและเป็นจำนวนเต็ม แต่เมื่อฉันพยายาม .append เข้ากับอาร์เรย์ตัวแปรของฉัน ดูเหมือนว่าจะไม่ทำงาน ฉันแก้ไขโพสต์แรกของฉัน - person robin.s; 18.05.2015