0

バック エンドレス テーブルからデータをロードしようとしていますが、テーブルを正しくロードできません。空白のままです。複数の場所で試してみましたが、クラッシュが発生しました。移動できる唯一の場所は、最後のエラー呼び出しの後です。ただし、テーブルは空白のままです。関連するコードは、私の fetchingUserDataAsync() 関数にあります。

これが私のテーブルビューコントローラーです:

import UIKit

class UserTableViewController: UITableViewController {

var backendless = Backendless.sharedInstance()

 let follow:Follow = Follow()



var usernames = [""]
var userids = [""]
var userEmails = [""]

var isFollowing = [false]


func fetchingUserDataAsync() {

     self.userids.removeAll(keepCapacity: true)
     self.usernames.removeAll(keepCapacity: true)
    self.isFollowing.removeAll(keepCapacity: true)

    print("\n============ Fetching user data using the ASYNC API ============")





    let query = BackendlessDataQuery()
    backendless.persistenceService.of(BackendlessUser.ofClass()).find(
        query,
        response: { ( name : BackendlessCollection!) -> () in
            let currentPage = name.getCurrentPage()

            for names in currentPage as! [BackendlessUser] {
                //print("User name = \(names.name)")

                if(names.name != self.backendless.userService.currentUser.name){

                self.usernames.append(names.name)

                    self.backendless.persistenceService.of(BackendlessUser.ofClass()).find(
                        query,
                        response: { ( objectId : BackendlessCollection!) -> () in
                            let currentPage = objectId.getCurrentPage()

                            for objects in currentPage as! [BackendlessUser] {
                                //print("User id = \(objects.objectId)")

                                if(objects.objectId != self.backendless.userService.currentUser.objectId){

                                    self.userids.append(objects.objectId)

                                    let currentUser = self.backendless.userService.currentUser
                                    let user = objects.objectId

                                    let whereClauseOne = "follower = '\(currentUser.objectId)' "

                                    let whereClauseTwo = "following= '\(user)'"

                                    //print ("I am following'\(whereClauseTwo)'")

                                    self.backendless.persistenceService.of(objects.ofClass()).find(
                                        query,
                                        response: { objects -> () in


                                            if let objects = objects{


                                                self.isFollowing.append(true)

                                            } else{

                                                self.isFollowing.append(false)

                                            }



                                        },
                                        error: { ( fault : Fault!) -> () in
                                            print("Server reported an error: \(fault)")
                                        }
                                    )


                                }


                            }


                        },
                        error: { ( fault : Fault!) -> () in
                            print("Server reported an error: \(fault)")
                        }
                    )


                }


            }



        },
        error: { ( fault : Fault!) -> () in
            print("Server reported an error: \(fault)")
        }
    )

    //////////////////////////////////////////////////////////////////////////////////
    self.tableView.reloadData()


}





override func viewDidLoad() {
    super.viewDidLoad()




    fetchingUserDataAsync()



}
4

1 に答える 1

1

データ配列がオブジェクトで満たされた後、リロード データを呼び出す必要があります。応答クロージャはしばらくして Async と呼ばれ、リロード データはビューですぐに呼び出されるため、外側ではなく応答クロージャの内側に配置する必要があります。ロードしました。もちろん、中に入れるときは、リロードデータをメインキューにディスパッチする必要があります。

于 2016-04-12T04:27:00.410 に答える