2015-05-07 3 views
2

Я добавил «Панель поиска и контроллер отображения» в библиотеке объектов, и я добавил необходимые функции в свой контроллер tableviewcontroller. Tableviewcontroller работает правильно. Но когда я нажимаю на строку поиска, она дает эту ошибку.Swift & Parse: UISearchbar не работает

«Завершение приложения из-за неперехваченного исключения» NSInternalInconsistencyException », причина:« не удалось удалить ячейку с идентификатором mysharedCell - необходимо зарегистрировать ниб или класс для идентификатора или подключить прототип ячейки в раскадровке »

Я проверил идентификатор ячейки и никаких проблем с этим. Вот мой кодовая таблица вида:

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
    let cell = tableView.dequeueReusableCellWithIdentifier("mysharedCell", forIndexPath: indexPath) as! MySharedTableViewCell 

    var object: PFObject = self.noteObjects.objectAtIndex(indexPath.row) as! PFObject 

    var likes:NSNumber = object["like"] as! NSNumber 
    cell.mySharedTitle?.text = object["title"] as? String 
    cell.mySharedText?.text = object["text"] as? String 

    if let x = object["date"] as? NSDate { 
     cell.mySharedDate?.text = getDateAsString(x) 
    } 
    else { 
     cell.mySharedDate?.text = "No date!" 
    } 
    cell.likesCount.text? = String("\(likes)") 
    return cell 
} 

А вот мои функции поиска:

func searchBarTextDidEndEditing(searchBar: UISearchBar) { 
    // Dismiss the keyboard 
    searchBar.resignFirstResponder() 

    // Force reload of table data 
    self.fetchAllObjects() 
    self.fetchAllObjectsFromLocalDatastore() 
} 

func searchBarSearchButtonClicked(searchBar: UISearchBar) { 
    // Dismiss the keyboard 
    searchBar.resignFirstResponder() 

    // Force reload of table data 
    self.fetchAllObjects() 
    self.fetchAllObjectsFromLocalDatastore() 
} 

func searchBarCancelButtonClicked(searchBar: UISearchBar) { 

    // Clear any search criteria 
    searchBar.text = "" 

    // Dismiss the keyboard 
    searchBar.resignFirstResponder() 

    // Force reload of table data 
    self.fetchAllObjects() 
    self.fetchAllObjectsFromLocalDatastore() 

} 

Я не вижу никаких проблем. Я правильно скопировал эти коды из других примеров проектов. Из-за этого мне что-то не хватает. Что не так с этим кодом?

+0

является контроллер поиска отображения связан с делегатом? Также внутри класса вы вызываете UISearchBarDelegate , например. 'class TableviewController: PFQueryTableViewController, UISearchBarDelegate' – TomTom

+0

Да, я назвал searchbar.delegate = self и uisearchbardelegate в viewdidappaer. – jorjj

+0

Ну, у меня была одна и та же проблема, код, кажется, в порядке. Я решил это, перейдя в основную раскадровку и проверив выходы и ссылки на выходы, где все правильно, а не дубликаты и т. Д. Убедитесь, что делегат не ссылается на searchBar, просто на контроллер отображения поиска, поскольку это то, что покажет новый возвращенный табличный вид. – TomTom

ответ

0

Проблема решена. Я пропустил контроль поиска в моей функции запроса.

Код:

if searchBar.text != "" { 
    query.whereKey("search_text", containsString: searchBar.text.lowercaseString) 
     }