iOS UITableView 未响应 Swift 中的 reloadData() 请求

iOS UITableView not responding to reloadData() request in Swift

我正在使用 SwiftyJSON 解析数据。数据是通过 Alamofire 发出的 API 请求接收的。出于某种原因,当我使用 reloadData() UITableView 方法时,UITableView 没有任何反应。我正在使用 UITableViewViewController Swift class 所以没有必要为 UITableView 创建一个 IBOutlet ......这是真的吗?我还确保我也正在获取数据并正确解析它。下面是我的代码,谁能找出问题所在?

    func search(searchTerm: String) {

    var finalSearchQuery: String = String()

    for objects in searchTerm.characters {

        if objects == " " {

            finalSearchQuery = finalSearchQuery + "+"

        } else {

            finalSearchQuery = finalSearchQuery + "\(objects)"

        }

    }

    print(finalSearchQuery)

    Alamofire.request(.GET, "https://cranbrook.myschoolapp.com/api/directory/directoryresultsget?directoryId=449&searchVal=\(finalSearchQuery)&facets=&searchAll=false").responseJSON { response in

        var instanceSearchResult: SearchResult!

        for object in JSON(response.result.value!) {

            let firstName: String = object.1["FirstName"].stringValue
            let lastName: String = object.1["LastName"].stringValue
            let email: String = object.1["Email"].stringValue
            let largeFilename: String = object.1["LargeFileName"].stringValue
            let addressLine1: String = object.1["AddressLine1"].stringValue
            let city: String = object.1["City"].stringValue
            let state: String = object.1["State"].stringValue
            let zip: String = object.1["Zip"].stringValue
            let homePhone: String = object.1["HomePhone"].stringValue
            let gradYear: String = object.1["GradYear"].stringValue
            let gradeDisplay: String = object.1["GradeDisplay"].stringValue
            let gradeNumericDisplay: String = object.1["GradeNumericDisplay"].stringValue

            instanceSearchResult = SearchResult(firstName: firstName, lastName: lastName, email: email, largeFilename: largeFilename, addressLine1: addressLine1, city: city, state: state, zip: zip, homePhone: homePhone, gradYear: gradYear, gradeDisplay: gradeDisplay, gradeNumericDisplay: gradeNumericDisplay)

            self.tableView.reloadData()

            print(instanceSearchResult)

        }

        self.searchResult?.append(instanceSearchResult)

    }

    ProgressHUD.showSuccess("Done")
    print("search conplete")

}

将 SearchResult 添加到 searchResult 数组后,尝试重新加载 table。

我认为这对你有用。

func search(searchTerm: String) {

var finalSearchQuery: String = String()

for objects in searchTerm.characters {

    if objects == " " {

        finalSearchQuery = finalSearchQuery + "+"

    } else {

        finalSearchQuery = finalSearchQuery + "\(objects)"

    }

}

print(finalSearchQuery)

Alamofire.request(.GET, "https://cranbrook.myschoolapp.com/api/directory/directoryresultsget?directoryId=449&searchVal=\(finalSearchQuery)&facets=&searchAll=false").responseJSON { response in

    var instanceSearchResult: SearchResult!

    for object in JSON(response.result.value!) {

        let firstName: String = object.1["FirstName"].stringValue
        let lastName: String = object.1["LastName"].stringValue
        let email: String = object.1["Email"].stringValue
        let largeFilename: String = object.1["LargeFileName"].stringValue
        let addressLine1: String = object.1["AddressLine1"].stringValue
        let city: String = object.1["City"].stringValue
        let state: String = object.1["State"].stringValue
        let zip: String = object.1["Zip"].stringValue
        let homePhone: String = object.1["HomePhone"].stringValue
        let gradYear: String = object.1["GradYear"].stringValue
        let gradeDisplay: String = object.1["GradeDisplay"].stringValue
        let gradeNumericDisplay: String = object.1["GradeNumericDisplay"].stringValue

        instanceSearchResult = SearchResult(firstName: firstName, lastName: lastName, email: email, largeFilename: largeFilename, addressLine1: addressLine1, city: city, state: state, zip: zip, homePhone: homePhone, gradYear: gradYear, gradeDisplay: gradeDisplay, gradeNumericDisplay: gradeNumericDisplay)

        print(instanceSearchResult)
        self.searchResult?.append(instanceSearchResult)
    }

    self.tableView.reloadData()

}

ProgressHUD.showSuccess("Done")
print("search conplete")

}