2

I am parsing data with SwiftyJSON. The data was received through an API request made through Alamofire. For some reason when I am using the reloadData() UITableView method nothing happens to the UITableView. I am using the UITableViewViewController Swift class so there is no need to create an IBOutlet for the UITableView... is that even true? I also made sure that I am also getting data and parsing it correctly. Here is my code below, can anyone figure out what is wrong?

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

}
Bhavin Ramani
  • 3,221
  • 5
  • 30
  • 41
Stefan DeClerck
  • 1,162
  • 2
  • 12
  • 22

1 Answers1

2

Try to reload table after append SearchResult to searchResult array.

I think this will work for you.

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

}
technerd
  • 14,144
  • 10
  • 61
  • 92