【问题标题】:iOS UITableView not responding to reloadData() request in SwiftiOS UITableView 没有响应 Swift 中的 reloadData() 请求
【发布时间】:2016-04-05 20:45:14
【问题描述】:

我正在使用 SwiftyJSON 解析数据。数据是通过 Alamofire 发出的 API 请求接收的。由于某种原因,当我使用reloadData() UITableView 方法时,UITableView 没有任何反应。我正在使用UITableViewViewController Swift 类,因此无需为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 Array 中填充表格吗?
  • @technerd 是的,我在 searchResult 数组中有搜索结果数据后填充它,但 tableView 上没有加载任何内容
  • 在 for-each 循环中重新加载 tableView 是个坏主意。

标签: ios swift uitableview alamofire reloaddata


【解决方案1】:

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

我认为这对你有用。

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

}

【讨论】:

    猜你喜欢
    • 2017-02-11
    • 1970-01-01
    • 1970-01-01
    • 2016-01-12
    • 2017-12-14
    • 2016-02-16
    • 2016-03-30
    • 2015-11-04
    • 2014-12-04
    相关资源
    最近更新 更多