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")
}
我正在使用 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")
}