Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Swift - override tableview function - Method does not override any method from its superclass

I want to implement UISearchController, going step by step using this tutorial:

Search for places using MKLocalSearchRequest and display results with UISearchController

And in this section...

Search for locations using MKLocalSearchRequest

...I have an issue with step 3.Set up the Table View Data Source

extension LocationSearchTable {
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return matchingItems.count
}

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCellWithIdentifier("cell")!
    let selectedItem = matchingItems[indexPath.row].placemark
    cell.textLabel?.text = selectedItem.name
    cell.detailTextLabel?.text = ""
    return cell
  }
}

Error:Method does not override any method from its superclass

I'm trying to remove override from cellForRowAtindexPath tableView function, in this case i have no error in Xcode, but have an error after execution:

Terminating app due to uncaught exception 'NSInternalInconsistencyException', 
reason: 'UITableView (<UITableView: 0x7ff8e03a3800; frame = (0 0; 375 667); clipsToBounds = YES; autoresize = W+H;
gestureRecognizers = <NSArray: 0x604002046450>; layer = <CALayer: 0x604001626620>; 
contentOffset: {0, -56}; contentSize: {375, 132};adjustedContentInset: {56, 0, 0, 0}>) 
failed to obtain a cell from its dataSource(<CityWeather.LocationSearchTable: 0x7ff8de696e60>)'

Error message yells: failed to obtain a cell from its dataSource(<CityWeather.LocationSearchTable: 0x7ff8de696e60>)

Please tell me, what I'm doing wrong? And how can I handle this issue?? Thanks.

like image 705
Rurom Avatar asked Nov 21 '17 12:11

Rurom


1 Answers

The tutorial is using old syntax for UITableviewDatasource methods(maybe Swift 2.2):

You need these now :

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {

}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

}

Always use XCode's code completion wherever possible.

like image 92
Puneet Sharma Avatar answered Oct 26 '22 23:10

Puneet Sharma